整数反转

2019-11-03  本文已影响0人  极客匠

题目:给出一个32位的有符号整数,将这个整数种每位上的数字进行反转。

例: 输入:123,输出:321

例:输入-123,输出:-321

例:输入120,输出:21

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

解题思路:

对当前数值进行对10去余数,再填入result尾部,即可以完成数字反转。

问题点:

​ 边界情况处理:int取值范围[-231, 231 - 1],如果出现反转数字溢出,则立即return 0。每次计算完后,判断result和int取值范围的大小关系

python的坑:由于python的//操作时向下取整,导致正负数取于%操作结果不一致。因需要把原数字转为正数进行操作。

代码如下:

class Solution:
    def reverse(self, x: int) -> int:
        result = 0
        temp = abs(x)
        int_x = (1 << 31) - 1 if x > 0 else 1 << 31
        while temp != 0:
            pop = temp % 10
            result = result * 10 + pop 
            if result > int_x: 
                return 0
            temp //= 10
        return result if x>0 else -result

输入

123

输出

321

差别

预期结果

321

上一篇 下一篇

猜你喜欢

热点阅读