給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉


在力扣網上做第二道簡單的題,上代碼:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM