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;
            }

    附 灵魂画师牧码 图解算法

     

     

     

      

  • 相关阅读:
    第一课 JSON的简介
    xml 简介
    前端面试题汇总(长期更新)
    HTML5中的canvas
    AJAX第一课 AJAX的学习和简介
    margin:0 auto和text-aglin:center的区别
    js中的正则表达式
    border和box-shadow
    css中的伪类
    (素材源码)猫猫学IOS(十五)UI之曾经大热的打砖块小游戏
  • 原文地址:https://www.cnblogs.com/h-jang/p/11811269.html
Copyright © 2011-2022 走看看