JAVA-LeetCode简单07

1.题目

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:

输入: 123
输出: 321
注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

来源:力扣(LeetCode)

链接:整数反转

2.分析

将一个整数反转,等同于将其按位推出再按位推入,
如:123->12->1
推出的顺序 首先3,然后2,最后1,
推入的顺序 首先3,然后2,最后1,
先得到3将其保存,接下来得到2,3需要进位310,再推入2,得到32,
最后得到1,32需要进位
10,得到320,推入1.得到321
此代码的关键在于对数值范围的判断,以及判断所处的位置,不能放在最后,会导致越过最大值或最小值

3.代码示例

public static int reverse(int a){
    
    
        int b = 0;
        int num = 0;
        while(a !=0){
    
    
            b=a%10;
            a/=10;
            if (num>Integer.MAX_VALUE/10 ||(b==Integer.MAX_VALUE/10 && b>7)) return 0;
            if (num>Integer.MAX_VALUE/10 ||(b==Integer.MAX_VALUE/10 && b<-8)) return 0;
            num=num*10+b;
        }

        return num;
    }

猜你喜欢

转载自blog.csdn.net/weixin_44712669/article/details/111500230