在力扣網上做第二道簡單的題,上代碼:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
k= 0
j=0
if (-2)**31<x<0:
x = -x # 參數x為負值時,先轉成正數,在計算
while x>0:
if x% 10!=0 or (x% 10==0 and k!=0) : # 在0不在數字尾部的情況比如109轉成901,10900也轉成901 和不為0的數字的情況下繼續下面的reverse操作
k =j + x% 10 ##可以取消j變量,直接用k = k*10+x%10
x = int(x/10)
j=k*10
if -k>(-2)**31: #判斷下反轉后的結果是否溢出,這給很重要,又幾次提交代碼不通過就是忘記做溢出處理了
return -k
else:
return 0
elif 0<x<2**31-1:
while x>0:
if x% 10!=0 or (x% 10==0 and k!=0):
k = j + x% 10 #可以取消j變量,直接用k = k*10+x%10
x = int(x/10)
j=k*10
if k<2**31-1:
return k
else:
return 0
else:
return k
print("inpur error")
P.S 注意溢出
注意:假設我們的環境只能存儲得下 32 位的有符號整數,則其數值范圍為 [−231, 231 − 1]。請根據這個假設,如果反轉后整數溢出那么就返回 0。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reverse-integer