7.整数反转
题目大意
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [ − 2 31 , 2 31 − 1 ] [−2^{31}, 2^{31} − 1] [−231,231−1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解题思路
通过强制转换类型将x
转换为字符串并使用切片进行反转,再将其转换为整型去除有可能在首位出现的0,再将符号添加上就可。需要注意的是结果需要在
[
−
2
31
,
2
31
−
1
]
[−2^{31}, 2^{31} − 1]
[−231,231−1]内。
def reverse(self, x: int) -> int:
sign = 1 if x > 0 else -1
reverse = sign * int(str(abs(x))[::-1])
if abs(reverse) > 2 ** 31 - 1:
return 0
return reverse