給定一個(gè) 32 位有符號(hào)整數(shù)姑曙,將整數(shù)中的數(shù)字進(jìn)行反轉(zhuǎn)。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:
假設(shè)我們的環(huán)境只能存儲(chǔ) 32 位有符號(hào)整數(shù)熬尺,其數(shù)值范圍是 [?231, 231 ? 1]。根據(jù)這個(gè)假設(shè),如果反轉(zhuǎn)后的整數(shù)溢出嫁蛇,則返回 0课幕。
方法一:數(shù)學(xué)計(jì)算法
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
##測(cè)試
>>> reverse(123456789013)
0
>>> reverse(8090)
908
>>> reverse(-906520)
-25609
方法二:字符串切片反轉(zhuǎn)
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
##測(cè)試
>>> reverse(9080)
809
>>> reverse(-1230450)
-540321
>>> reverse(1534236469)
0