题目:给出一个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