zoukankan      html  css  js  c++  java
  • 【LeetCode算法-7】Reverse Integer

    LeetCode第7题:

    Given a 32-bit signed integer, reverse digits of an integer.

    Example 1:

    Input: 123
    Output: 321

    Example 2:

    Input: -123
    Output: -321

    Example 3:

    Input: 120
    Output: 21

    Note:
    Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

    解题思路:

    假如:x=1234,y=0

    1)y乘以10,x把末位4移除掉,加给y(x=123,y=4)

    2)y乘以10,x把末位3移除掉,加给y(x=12,y=43)

    3)y乘以10,x把末位2移除掉,加给y(x=1,y=432)

    4)y乘以10,x把末位1移除掉,加给y(x=0,y=4321)

    代码:

    int y = 0;
    while(x/10!=0){
        y*=10;
        y+=x%10;
        x/=10;
    }
    y=y*10 +x;

    结果报错

    原因是int的范围是-2147483647~2147483648

    leetcode给的input是1534236469,倒转之后是9646324351,导致溢出了。所以要加上溢出判断

    最后的代码

    class Solution {
        public int reverse(int x) {
            
            int negative = 1;  
            if(x <= Integer.MIN_VALUE)  
                return 0;  
            if(x < 0){  
                x = -x;  
                negative = -1;  
            }  
              
            long y = 0;
            while(x/10!=0){
                y*=10;
                y+=x%10;
                x/=10;
            }
            y=y*10 +x;
              
            if(y > Integer.MAX_VALUE)  
                return 0;  
            else  
                return (int)y * negative; 
        }
    }

    这也是很坑啊,溢出就输出0,鬼知道啊

  • 相关阅读:
    html5学习笔记2——新元素
    html5学习笔记——基础
    html学习笔记之2——多媒体
    Python调试打印错误信息
    Python随机字符串验证码
    js传递数组
    js上传图片并预览
    JS获取当前日期、比较日期大小
    nrm管理npm源
    使用Git Subtree在多个项目中共用同一个子项目
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/9057725.html
Copyright © 2011-2022 走看看