【LeetCode - Java练习】07.整数反转(简单)

1.题目描述

在这里插入图片描述

2.解题思路

我们可以一次构建反转整数的一位数字。在这样做的时候,我们可以预先检查向原整数附加另一位数字是否会导致溢出。
此题主要难点是判断是否溢出,因此可事先检查是否会导致溢出。
为了便于解释,我们假设 rev 是正数。
如果 temp = rev⋅10+pop 导致溢出,那么一定有 rev≥ 10/INTMAX。
如果 rev>10/INTMAX ,那么 temp =rev⋅10+pop 一定会溢出。
如果 rev== 10/INTMAX,那么只要pop>7,temp =rev⋅10+pop 就会溢出。
当 rev 为负时可以应用类似的逻辑。

3.代码实现

class Solution {
    
    
    public int reverse(int x) {
    
    
        int rev = 0;
        while (x != 0) {
    
    
            int pop = x % 10;
            x /= 10;
            if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
            rev = rev * 10 + pop;
        }
        return rev;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_48683410/article/details/113361280