題目描述:
題目難度:簡單
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−2^31, 2^31 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
笨辦法:
該題比較簡單,解題方法很直觀。所謂笨辦法,也就是第一反應的解法,沒有經過細節的優化。
基本的思路是:記錄下整數的正/負符號,對整數取絕對值。從低位到高位逐位左移,通過取餘數得到整數的各個位,將各個位存入陣列。利用陣列中的數字v和索引i,就可以得到反轉後的整數的各位。索引i處的數字v,對應反轉後的整數字為v*10 **(l-i-1),其中l表示陣列的長度。注意:不要忘記把正負符號加回來,以及對超過合法範圍的情況的處理。
聰明辦法:笨辦法:
用時40ms,此方法擊敗了30%的使用者。
class solution(object):
def reverse(self, x):
""":type x: int
:rtype: int
"""s=#記錄整數的各個位
op=1 if x>0 else -1#符號
n=abs(x)
hi,lo=2**31-1,-2**31
while n>0:
n=n//10
# 注意符號
l=len(s)
res=0
for i,v in enumerate(s):
res=res+v*10**(l-i-1)
res=op*res
if res>=hi or res<=lo:
return 0
return res
聰明的方法:
同時也是簡潔的方法,此方法用時36ms,擊敗了93%的使用者。
class solution(object):
def reverse(self, x):
""":type x: int
:rtype: int
"""op=1 if x>0 else -1#符號
n=abs(x)
ans=0
while n>0:
ans=ans*10+n%10
n=n//10
return ans*op if ans<=0x7fffffff else 0
LeetCode7反轉整數
給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。以字串方式思考...
LeetCode 7 反轉整數
給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。很簡單,就是不...
leetcode 7反轉整數
隨機一題 給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返...