给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
class Solution:
def reverse(self, x: int) -> int:
result = []
#先取x得绝对值,统一视为正整数。(负数只要在最后输出之前加负号就可以了)
x_true = abs(x)
#将整型转化为字符串然后转化为列表
x_t = list(str(x_true))
n = len(x_t)
#倒序遍历列表
for i in range(1,n+1):
j = x_t[-i]
#倒叙读取第一步:也就是列表的最后一个元素等于0的话就跳过
if i == 1 and j == 0:
pass
#其余情况直接倒序读取到的元素添加进result列表中
else:
result.append(j)
# 连接字符串并转化成整型(join方法更高效,只占用一次内存)
re = ''.join(result)
r = int(re)
#此时判断读入的数字是正数还是负数,如果是负数就加负号
if x<0:
r = 0-r
#判断结果是否会溢出
m = 2**31
if -m <= r <= m-1:
return r
else:
return 0
执行用时:60ms
class Solution:
def reverse(self, x: int) -> int:
#先取x得绝对值,统一视为正整数。(负数只要在最后输出之前加负号就可以了)
x_true = abs(x)
result = 0
#直接对数字进行循环操作
while x_true!=0:
#中间值:对x_true取模(余数),得到的就是个位数
temp = x_true%10
#将原来的result乘以10(左移)再加上得到的个位数
result = result*10 + temp
#将原数减去个位数之后除以10得到处理之后的数,并将浮点数转为整型
x_true = int(x_true/10)
x_true = x_true//10
#判断输入的正负
if x<0:
result = -result
#判断结果是否会溢出
m = 2**31
if -m <= result <= m-1:
return result
else:
return 0
运行用时:60ms