美文网首页
ReverseInteger

ReverseInteger

作者: yixinfeng | 来源:发表于2017-03-20 15:50 被阅读0次
  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.

相关文章

网友评论

      本文标题:ReverseInteger

      本文链接:https://www.haomeiwen.com/subject/oudjuttx.html