目录
1.题目描述
给你一个 32 位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1]
,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
2.题目分析
读题课知,给的是有符号的整数x,要求得这个数反转后的数,但不改变正负
所以可以想到将x里面的数一个一个取出来,然后放到一个我们设定的字符串里面去,最后加上符号的方法
3.代码实现
class Solution:
def reverse(self, x: int) -> int:
#取x的绝对值,确保后续反转时不会因为符号问题出错
y = abs(x)
#初始化一个变量res用于存储反转后的结果
res = 0
max_x = 2 ** 31 - 1 #正数的最大值
min_x = 2 ** 31 #负数的最小值(注意这里用不用加上负号,我们把符号留到最后判断)
boundary = max_x if x > 0 else min_x
while y != 0:
#取出y的个位数,并加到res中
res = y % 10 + res * 10
#如果反转后的结果res大于边界值,说明溢出,直接返回0
if res > boundary:
return 0
#无符号右移4位等价于y //= 10,即去掉y的个位数
y //= 10
return res if x > 0 else -res
4.一丢丢吐槽
虽然学习起来好难,但是黯冽,要坚持住鸭!