原题:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
stauts = -1 if x < 0 else 1
x = abs(x)
result =0
while x!=0:
result= result*10+x%10
x=x//10
if result > 2**31:
result =0
return result*stauts
另一种思路:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
tag = 1 if x >= 0 else -1 # 判断在正负
st = str(abs(x)) # 取绝对值,且转为string
st = ''.join(re.findall('(.*)0*', st)) # 剔除尾部的0
res = int(st[::-1]) # 字符串转为int类型
res = res if res >= - 2147483648 and res <= 2147483647 else 0
return res * tag