「リートコード - 7. Reverse Integer」

ジャバソリューション

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public int reverse(int x) {
boolean sign = false;
if (x < 0) {
x = -x;
sign = true;
}
int y = 0;
while (x > 0) {
if (y > Integer.MAX_VALUE / 10) {
return 0;
}
y *= 10;
if (y > Integer.MAX_VALUE - x % 10) {
return 0;
}
y += x % 10;
x /= 10;
}
return sign ? -y : y;
}
}

虽然感觉我这段代码有点问题,正负一起判断了,负数会多一个,但好像还是对的,因为-2147483648倒过来不能作为输入。但是如果再多分析一步,其实判断加那次也不用(跟标准题解一样)。