题目分析
- 假设最大值就为2789,那它反转之后为9872,一定会溢出
- b = a * 10 + x % 10 ; (b - x % 10) / 10 = a,反推a,能相等说明没有溢出,因为溢出数字就一定会变得不同
Solution
public int reverse1(int x) {
long res = 0;
while (x != 0) {
res = res * 10 + x % 10;
if (res > Integer.MAX_VALUE) return 0;
if (res < Integer.MIN_VALUE) return 0;
x /= 10;
}
return (int) res;
}
public int reverse(int x) {
int res = 0;
while (x != 0) {
int prevRes = res;
int mod = x % 10;
res = prevRes * 10 + mod;
if ((res - mod) / 10 != prevRes) return 0;
x /= 10;
}
return res;
}
Reference:小码哥MJ