这个题三个地方需要注意,正负,开始为0,以及Overflow.
一般做过atoi,都知道会有正负和overflow,开头为0,我直接写出来的程序已经误打误撞解决了。
Overflow有几种处理方式,第一是throw exception, 第二个是判断边界条件,可以写的很严格,也可以用MAX_VALUE/10.
public int reverse(int x) {
//正负问题
boolean negative = x < 0 ? true: false;
int result = 0;
int temp = Math.abs(x);
int rightDigit = 0;
//0开头的问题已经解决了
while (temp != 0) {
rightDigit = temp % 10;
result = result * 10 + rightDigit;
temp = temp/10;
}
if (result > Integer.MAX_VALUE) {
return Integer.MAX_VALUE;
}
return negative == true ? result*(-1) : result;
}
No comments:
Post a Comment