7.、Reverse Integer(整数取反)

题目要求很简单,就是给定一个在[−2^31, 2^31 − 1]范围内的整数,对该整数取反。
比如,
输入=123, 输出=321。
输入=-123,输出=-321。
输入=120, 输出=21。

这个题目在求解的时候,需要注意的是数据类型的选取,因为涉及到溢出,其次当输出结果产出范围后,结果要变为0。在编写代码的时候,因为忘记了移位符号和运算符的优先级顺序,卡了一下,刚好当天晚上在看《深入理解计算机系统》时候,看到这个知识点,移位符的优先级是低于运算符的。在python中是不需要考虑数据类型的,代码如下所示:

C++:

@by_chandepire
    int reverse(int x) {
        long long result=0;
        long long max = ((long long)1<<31)-1;
        long long min = 0 - (1 << 31);
        while(x)
        {
            result = result * 10 + x % 10;
            x = x /10;
        }
        return result>max || result < min?0:result;
    }

python:

@by_chandepire
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        result = 0
        min = -(1<<31)
        max = (1<<31) - 1
        flag = 1
        if x < 0:
            flag = -1
            x = -x
        while x:
            result = result*10 + x % 10
            x = x / 10
        if result < min or result > max:
            return 0
        else:
            return result*flag
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值