7. 整数反转 考虑溢出
class Solution {
public int reverse(int x) {
int ans = 0;
while (x != 0) {
int pop = x % 10;
if (ans > Integer.MAX_VALUE / 10 || (ans == Integer.MAX_VALUE / 10 && pop > 7))
return 0;
if (ans < Integer.MIN_VALUE / 10 || (ans == Integer.MIN_VALUE / 10 && pop < -8))
return 0;
ans = ans * 10 + pop;
x /= 10;
}
return ans;
}
}
x | pop | ans |
---|---|---|
1234 | 0 | |
123 | 4 | 4 |
12 | 3 | 43 |
1 | 2 | 432 |
0 | 1 | 4321 |