Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
想要看到一个"Accepted"真的好艰难呀!每一次敲完之后都眼巴巴地等着,结果等到的不是"Compile error"就是"runtime error"。今天的这道题其实也是以前做过的,但是我一开始居然选择了一个超级麻烦的解法(先是将整数转化为字符串,再转化为字符数组。。我也不知道我是怎么想的。。),直接导致后面一直在做无用功的修改,最后实在改不下去了,还是乖乖回归到最原始的办法了,求余。
public class Solution {
public int reverse(int x) {
if (x == Integer.MIN_VALUE){
return 0;
} //check1
if (x < 0){
return (-1) * reverse(-x);
} //check2
int newN = 0;
while (x != 0){
if (newN <= Integer.MAX_VALUE/10){ //check3
newN *= 10;
newN += x % 10;
x /= 10;
}
else
return 0;
}
return newN;
}
}
check1:没有这个步骤的话会报错如下:
缺少check2的话报错如下:
check3是最重要的环节,一开始用麻烦解法的时候就一直报这个错误,后来实在不知道怎么改了才弃暗投明的,报错如下:
综上所述,在正式编程之前先把各种可能出现的错误预料到,比如特殊整数(上溢/下溢),正负数的不同处理等,如果不预先写好check代码,后面编译运行的时候就会漏洞百出,改起来还麻烦,倒不如防患于未然。所以说,通过这几次练习,加上昨天翻看了几页《剑指offer》,真的觉得写代码前和后对程序进行check很重要呢,一定要养成一个好习惯。