解题思路
这个题目是反转一个整数,但是要求如果出现溢出的时候返回0。思路如下:
- 如果是负数,考虑先转成正数再处理,所以对MIN_VALUE先要做特殊处理。
- 现在都是正数了,反转结果用一个long来存储,这样就保证不会溢出了。
- 如果处理后结果大于MAX_VALUE,说明溢出了,返回0。
- 结果在转成int返回。
参考源码
class Solution {
public int reverse(int x) {
if(x == Integer.MIN_VALUE){
return 0;
}
boolean nav = false;
if (x < 0) {
nav = true;
x = -x;
}
long t = 0;
while (x != 0) {
t = 10 * t + x % 10;
x = x / 10;
}
if(t>Integer.MAX_VALUE) {
return 0;
}
int r = (int)t;
if (nav) {
r = -r;
}
return r;
}
}