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

  • 相关阅读:
    BZOJ 5418: [Noi2018]屠龙勇士 EXCRT+multiset
    CF1033D Divisors Pollard-rho
    BZOJ 3782: 上学路 Lucas+ExCRT+容斥+dp
    BZOJ 1951: [Sdoi2010]古代猪文 ExCRT+欧拉定理+Lucas
    Activiti介绍(一)
    Centos7卸载FastDFS6.1卸载(六)
    FastDFS整合SpringBoot(五)
    FastDFS整合nginx模块报错
    SpringBoot怎么访问html文件
    FastDFS整合普通Maven项目(四)
  • 原文地址:https://www.cnblogs.com/lxr-xiaorong/p/13447231.html
Copyright © 2011-2022 走看看