class Solution {
public int reverse(int x) {
long result = 0;
while (x != 0) { // 如果是-123,%的值是-3、-2、-1,所以不用单独考虑负数
result = result * 10 + x % 10;
x /= 10;
}
if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
return 0;
}
return (int)result;
}
}
Integer.MAX_VALUE = 0x7fffffff; Integer.MIN_VALUE = 0x80000000
class Solution {
public int reverse(int x) {
long result = 0;
while (x != 0) {
result = result * 10 + x % 10;
x /= 10;
}
return (result > 0x7fffffff || result < 0x80000000) ? 0 : (int)result;
}
}
int * 10之后,如果大于Integer.MAX_VALUE,则会变成负数
class Solution {
public int reverse(int x) {
int temp = 0;
while (x != 0) {
if (temp * 10 / 10 != temp) { // 说明本次要越界了 (*10之后如果大于maxValue,会变成负数)
return 0;
}
temp = temp * 10 + x % 10;
x /= 10;
}
return temp;
}
}