题目
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例
示例1
输入: 123
输出: 321
示例2
输入: -123
输出: -321
示例3
输入: 120
输出: 21
注意
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
题目分析
反转数字的算法:
int rev = 0;
while(x != 0) {
rev = rev * 10 + x % 10;
x /= 10;
}
return rev;
当数据超出整型范围时会出现异常,题目要求此时返回0,所以加上判断语句,当前运算结果在下次运算后会出现溢出现象的话就直接返回0
代码实现
public static int reverse(int x) {
int re = 0;
while(x != 0) {
if(re > Integer.MAX_VALUE/10 ||
(re == Integer.MAX_VALUE/10 && x%10 > 7))
return 0;
if(re < Integer.MIN_VALUE/10 ||
(re == Integer.MIN_VALUE/10 && x%10 < -8))
return 0;
re = re*10 + x%10;
x /= 10;
}
return re;
}
1137

被折叠的 条评论
为什么被折叠?



