美文网首页
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