zoukankan      html  css  js  c++  java
  • 【力扣7】整数反转

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    示例 1:

    输入: 123
    输出: 321
     示例 2:

    输入: -123
    输出: -321
    示例 3:

    输入: 120
    输出: 21
    注意:

    假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

    此题主要是溢出 如果不考虑溢出可以直接用数学方法

    int rev = 0while(x!=0 ){
         int pop = x%10;
         x = x/10;
         rev = rev*10 + pop;           
    }

    考虑溢出时 需要注意范围是 (-2147483648,214748367)

    所以有些情况溢出

    1. 当rev>int.MaxValue/10 且 还要加个pop  (rev>21474836 , rev*10大于int.MaxValue) 

    2.当rev==int.MaxValue/10 pop>7  (rev = 21474836 ,此时个位pop如果大于7,将会溢出)

    3.当rev<int.MinValue/10 (负数同理)

    4.当rev==int.MinValue/10pop>-8 

     public int Reverse(int x)
            {
                int rev = 0;
                while (x != 0)
                {
                    int pop = x % 10;
                    x=x / 10;
                    if (rev > int.MaxValue / 10 || (rev == int.MaxValue / 10 && pop > 7))
                       return 0;
                    if (rev < int.MinValue / 10 || (rev == int.MinValue / 10 && pop < -8))
                        return 0;
                    rev = rev * 10 + pop;
                }
                return rev;
            }

    附 灵魂画师牧码 图解算法

     

     

     

      

  • 相关阅读:
    python-杂烩
    24 Python 对象进阶
    23 Python 面向对象
    22 Python 模块与包
    21 Python 异常处理
    20 Python 常用模块
    18 Python 模块引入
    2 Python 基本语法
    1 Python 环境搭建
    3 Python os 文件和目录
  • 原文地址:https://www.cnblogs.com/h-jang/p/11811269.html
Copyright © 2011-2022 走看看