题目:反转整数。
输入 123,输出 321;
输入 -23,输出 -23;
注意:int 的范围 [-232, 231-1],如果超出范围则返回 0。
注意:需要计算反转后的数是否超过了 int 的范围。
边界值计算方法参考:
1.假如 200 为最大值;
2.205 = 20 * 10 + 5 如果205是溢出的, 那么 20 肯定大于 200 / 10 ;
3.如果 20 > 200 / 10,那么 205 是溢出的;
4.如果 20 == 200/10,此时如果 pop > 5 则为溢出的;
5.将200更换为 231-1 对应的值,同样最小值也是这么计算。
解题思路:通过 %(取余)来获取个位上的数字,数字 / (除以)10,就获得了新的个位上的数。
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;
}
网友评论