给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
方法一:数学计算法
def reverse(x):
result = 0
flag = 1
if x<0:
x = -x
flag = -1
while (x):
a = x%10
result = result * 10 + a
x = x // 10
if result>2**31-1 or result<-2**31:
flag = 0
if flag == -1:
return -result
if flag == 1:
return result
if flag ==0:
return 0
##测试
>>> reverse(123456789013)
0
>>> reverse(8090)
908
>>> reverse(-906520)
-25609
方法二:字符串切片反转
def reverse(x):
if x>=0:
x = int(str(x)[::-1])
if x>2**31-1:
return 0
else:
return x
else:
x = -int(str(-x)[::-1])
if x<-2**31:
return 0
else:
return x
##测试
>>> reverse(9080)
809
>>> reverse(-1230450)
-540321
>>> reverse(1534236469)
0