zoukankan      html  css  js  c++  java
  • 007整数反转

    写在前面,参考的是力扣官网的画解算法

    一、java代码

    /*
     * @lc app=leetcode.cn id=7 lang=java
     *
     * [7] 整数反转
     */
    
    // @lc code=start
    class Solution {
        public int reverse(int x) {
    
            //定义最后输出的结果为ans
            int ans=0;
            while (x!=0){
    
                //取个位
                int pop=x%10;
                //判断是否上溢出
                //1、ans>Integer.MAX_VALUE/10,还有pop需要添加
                //2、ans==Integer.MAX_VALUE/10 && pop>7,7是2^31-1的个位数
                if(ans>Integer.MAX_VALUE/10 || (ans==Integer.MAX_VALUE/10 && pop>7)){
                    return 0;
                }
    
                //判断是否下溢出
                //1、ans<Integer.MIN_VALUE/10,还有pop需要添加
                //2、ans==Integer.MIN_VALUE/10 && pop<-8,8是2^31的个位数
                if(ans<Integer.MIN_VALUE/10 || (ans==Integer.MIN_VALUE/10 && pop<-8)){
                    return 0;
                }
    
                //反转输出结果
                ans=ans*10+pop;
                //将数字x的每一位拆开
                x/=10;
            }
    
            //得到最后的结果
            return ans;
    
        }
    }
    // @lc code=end
    
    
    

    二、思路分析

    2.1溢出

    1、通过字符串转换加try catch的方式来解决(效率低)

    2、通过数学计算来解决

    2.2思路

    1、通过循环将数字x的每一位拆开,在计算新值时每一步都判断是否溢出

    2、溢出的条件有两个

      (1)大于整数最大值MAX_VALUE

      (2)小于整数最小值MIN_VALUE

    3、设当前计算结果为ans;下一位为pop

    4、从ans*10+pop>MAX_VALUE这个溢出条件来看

      (1)当出现ans>MAX_VALUE/10还有pop需要添加时,则一定溢出

      (2)当出现ans=MAX_VALUE/10pop>7时,则一定溢出,7是2^31-1的个位数

    5、从ans*10+pop<MIN_VALUE这个溢出条件来看

      (1)当出现ans<MIN_VALUE/10还有pop需要添加时,则一定溢出

      (2)当出现ans=MIN_VALUE/10pop<-8时,则一定溢出,8是2^31的个位数

    三、画图举例

    拆解

    3.1

    3.2

    3.3

  • 相关阅读:
    poj----1330Nearest Common Ancestors(简单LCA)
    Tarjan--LCA算法的个人理解即模板
    hdu----(4545)魔法串(LCS)
    hdu---(1325)Is It A Tree?(并查集)
    hdu----(1599)最大子矩阵(几何/dp)
    hdu---(1054)Strategic Game(最小覆盖边)
    整理的一些模版LCS(连续和非连续)
    hdu---(4310)Hero(贪心算法)
    hdu----(4308)Saving Princess claire_(搜索)
    hdu------(4302)Holedox Eating(树状数组+二分)
  • 原文地址:https://www.cnblogs.com/lxr-xiaorong/p/13447231.html
Copyright © 2011-2022 走看看