zoukankan      html  css  js  c++  java
  • 7.Reverse Integer (INT; Overflow)

    Reverse digits of an integer.

    Example1: x = 123, return 321
    Example2: x = -123, return -321

     

    思路:要注意溢出。用以下做法,会溢出。

    class Solution {
    public:
        int reverse(int x) {
            int ret = 0;
            while(x){
                ret = ret * 10 + x%10;
                x /= 10;
            }
            return ret;
        }
    };

    改进的做法:

    class Solution {
    public:
        int reverse(int x) {
            if (x == INT_MIN) return 0;
            
            int ret = 0;
            int digit;
            bool pos = x>=0?true:false;
            
            x = abs(x); //现在对负数求模编译器不统一,所以转为正数操作
            while(x){
                digit = x%10;
              
                if (ret > (INT_MAX - digit) / 10)  //10*ret+digit > INT_MAX
                    return 0;
      
                ret = ret * 10 + digit;
                x /= 10;
    
            }
            if(pos) return ret;
            else return (-ret);
    
        }
    };
  • 相关阅读:
    导弹拦截版
    [USACO1.5]数字三角形 Number Triangles
    FBI树
    修复公路
    台阶问题
    阶乘问题
    连续自然数和
    又是毕业季I
    生活大爆炸版石头剪刀布
    曹冲养猪
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4648584.html
Copyright © 2011-2022 走看看