LeetCode(7)Reverse Integer

题目如下:

C++代码:

class Solution {
public:
    int reverse(int x) {
        if( overflow(x) == true)
        {  
            return 0;  
        }  
  
        int result = 0;  
          
        while (x!=0)  
        {  
            result = 10*result + x%10;  
            x /= 10;  
        }  
  
        return result;  
    }
private:
    bool overflow(int x)//此题要保证返回的整数位整型,确定的是x是一个整型
    {                   //故要判断x是否小于~(2^31-1),小于则没有越界
        if (x / 1000000000 == 0) // x的绝对值小于1000000000, 不越界  
        {  
            return false;  
        } else if (x == INT_MIN) // INT_MIN反转后越界,也没法按下述方法取绝对值(需要特判),直接返回true  
        {  
            return true;  
        }   
        x = abs(x);  
        // x = d463847412 ->  2147483647. (参数x,本身没有越界,所以d肯定是1或2)  
        // or -d463847412 -> -2147483648.   
        for (int cmp = 463847412; cmp != 0; cmp/=10, x/=10)  
        {  
            if ( x%10 > cmp%10 )  
            {  
                return true;  
            } else if (x%10 < cmp%10)  
            {  
                return false;  
            }  
        }  
          
        return false;  
    }
};

 

转载于:https://www.cnblogs.com/CQUTWH/p/6082165.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值