题目:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
说明:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
举例:
输入: -123
输出: -321
输入: 120
输出: 21
题干解析:
按照数组加一这道题的思路
我的方法:现将整数的每位拆分,最后再合成。
class Solution:
def reverse(self, x: int) -> int:
a = 0 #先处理符号位
if x < 0:
a = -1
x = x*(-1)
else:
a = 1
nums = []
while x != 0: #按位拆分成数组
nums.append(x%10)
x = x//10
l = len(nums)
digits = 0
for i in range(l): #再将数组组合成整数
digits += nums[i]*10**(l-1-i)
digits = digits*a #添加符号位
if digits > 2**31-1 or digits <-2**31:
return 0
else:
return digits