Leetcode 7 整數反轉

2021-09-19 06:42:09 字數 1301 閱讀 7808

題目描述:

題目難度:簡單

給出乙個 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 根據這個假設,如果反轉後的整數溢位,則返...