题目描述:
给你一个 32 位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1]
,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)
输入输出实例:
思路:首先可以判断x是否为0,如果为0我们直接返回0;如果不是零,我们可以取一个变量用来存储x的符号,然后对x取绝对值运算,要得到从后往前的每一位数字我们先对10取余,然后自己整除10就好了,将取余的结果放到我们要输出的结果变量里(不断更新结果变量),需要注意的是,我们还需要注意题中所给的取值范围,在最后的时候可以做一个判断。根据这个思路得到的代码如下:
class Solution:
def reverse(self, x: int) -> int:
MAX_INT = 2**31 -1
MIN_INT = -2**31
if x==0:
return 0
flag = 1
if x < 0 :
flag = -1
x = abs(x)
ans_num = 0
while x > 0 :
digit = x % 10
x = x // 10
ans_num = ans_num * 10 + digit
if ans_num > MAX_INT :
return 0
if flag == -1 :
ans_num = -ans_num
if ans_num < MIN_INT or ans_num > MAX_INT:
return 0
return ans_num
上述代码可以实现我们想要的结果: