zoukankan      html  css  js  c++  java
  • 【Leetcode-easy】Reverse Integer

      思路:取绝对值,反转,并判断反转的结果是否大于最大整数,需要注意的细节:判断时需要这样:result > (Integer.MAX_VALUE - v) / 10 否则result * 10 + v% 10 > Integer.MAX_VALUE左边会直接出现溢出。最后加上符号位。

     1     public int reverse(int x) {
     2         if(x==Integer.MIN_VALUE){
     3             return 0;
     4         }
     5         //然后取绝对值,判断绝对值不大于Integer.MAX_VALUDE,不能直接用result拼接判断,否则会溢出。
     6         //例如result * 10 + v% 10 > Integer.MAX_VALUE ,result为反转结果,v为最后一位,也是上一个原始数截取的余数.
     7         //左边很可能就会溢出,因此需要反转来判断 :result > (Integer.MAX_VALUE - v) / 10  
     8         int absx=Math.abs(x);
     9         int result=0;
    10         while(absx!=0){
    11             int v=absx%10;    //余数,作为反转后的连接位
    12             if(result>(Integer.MAX_VALUE-v)/10){
    13                 //溢出
    14                 return 0;
    15             }
    16             //如果不溢出,则连接下一位
    17             result=(result*10+v);
    18             absx/=10;    //原始数去掉最后一位,重复上述截取连接步骤
    19         }
    20         //如果原始数为负数,则返回负数,否则直接返回
    21         return x>0?result:-result;
    22         
    23     }
  • 相关阅读:
    汇编-实验9
    Starling开源手势库AcheGesture
    Robotlegs2的Starling扩展
    Flash Builder 4.6/4.7 注释以及字体大小修改
    js中函数的理解
    js对象引用赋值后
    var声明提前 undefined
    光棍节程序员闯关秀
    body和普通div背景图宽高百分比的区别
    笔试题
  • 原文地址:https://www.cnblogs.com/scecit/p/4969224.html
Copyright © 2011-2022 走看看