public int reverse(int x) {
long result=0;
int max = Integer.MAX_VALUE;
int min = Integer.MIN_VALUE;
while(x!=0 ){
int lastdigit = x%10;
result = lastdigit + result*10;
if((result > 0 && result > max) || (result < 0 && result < min)){
return 0;
}
x /= 10;
}
return (int)result;
}
这道题要注意的点主要为:
1、 一开始还考虑为负数设个flag,先把负数变成正数,计算之后再变回去。实际没有必要,JAVA里面对负数取模还是负数,所以不影响运算结果。
2、开始还纠结过x是个位数的时候,除以10结果等于多少,验证发现是等于0,所以while的条件里面写x!=0就可以了。
3、第一次提交没有通过,存在溢出的现象,当时觉得很奇怪,明明代码里面有校验了。仔细分析后发现,我的校验代码在result计算之后,其实那个时候就有可能溢出了。所以一开始result要设为long类型的,这样就不会溢出了,只是不符合校验条件的就返回0.