整數反轉
總結由於這兩道題採用相同的思路,所以放在一起寫。
判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
首先將數字換變為字串,把字串的每個字元放在乙個列表中。然後生成乙個新列表,列表各元素是前乙個列表的倒序,如果這兩個列表相等,則該數字是回文數。官方提示是:beware of overflow when you reverse the integer.
我看不懂這個提示…
class
solution
(object):
defispalindrome
(self, x)
:"""
:type x: int
:rtype: bool
"""ls_1=
list
(str
(x))
ls_2=
for i in
range
(len
(ls_1)-1
,-1,
-1):
)if ls_1 == ls_2 :
return
true
else
:return
false
執行用時 :64ms, 在所有 python 提交中擊敗了51.26%的使用者
記憶體消耗 :11.7mb, 在所有 python 提交中擊敗了25.86%的使用者
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
注意:
假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
(ps:再次注意是反轉後整數溢位)
和回文數字用到的方法一樣,同樣用兩個列表來解決。但是存在以下問題:儲存反轉後的列表如何轉換成整數
判斷給定數字是否為負的條件放在**
何時應該return 0
class
solution
(object):
defreverse
(self, x)
:"""
:type x: int
:rtype: int
"""if x <0:
a=-x else
: a=x
ls_1=
list
(str
(a))
ls_2=
for i in
range
(len
(ls_1)-1
,-1,
-1):
) ls=
''.join(ls_2)
ifint
(ls)
<=-2
**31
orint
(ls)
>=2**
31-1:
return
0if x >0:
return
int(ls)
else
:return
-int
(ls)
執行用時 :16ms, 在所有 python 提交中擊敗了93.27%的使用者
記憶體消耗 :11.6mb, 在所有 python 提交中擊敗了35.12%的使用者
用時很短比較出乎意料。與移除元素那個問題結合起來可以發現,檢索列表用時很短,但是增刪列表需要花不少時間(具體原因需要進一步的學習)。
關於正負數:python中的abs()函式可以獲得乙個數的絕對值。
關於列表轉換成整數:需要用"".join() 函式。括號裡是列表,「」中如果沒有則是將列表中所有元素連起來,如果是某字元,則將是將所有元素用該字元連起來。
還可以用列表的reverse函式來做:
回文數:
class
solution
(object):
defispalindrome
(self, x)
:"""
:type x: int
:rtype: bool
"""if x <0:
return
false
ls=list
(str
(x))
ls.reverse(
) y=
int(
''.join(ls)
)if x == y:
return
true
else
:return
false
結果:
執行用時 :68ms, 在所有 python 提交中擊敗了41.89%的使用者
記憶體消耗 :11.7mb, 在所有 python 提交中擊敗了26.87%的使用者
整數反轉:
class
solution
(object):
defispalindrome
(self, x)
:"""
:type x: int
:rtype: bool
"""if x <0:
return
false
ls=list
(str
(x))
ls.reverse(
) y=
int(
''.join(ls)
)if x == y:
return
true
else
:return
false
結果:
執行用時 :12ms, 在所有 python 提交中擊敗了98.12%的使用者
記憶體消耗 :11.7mb, 在所有 python 提交中擊敗了23.86%的使用者
從結果上比較兩種方法差別不大,但reverse寫起來更方便。
力扣題庫 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉...
力扣7 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉 示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21sign x 0 x正負 maxint32 1 31 1 準備int32最大值 res 0 準備結果,初始化為0 if...
力扣(7) 整數反轉
題目描述 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。思路 先轉字串,符號位單獨考慮。對只有數字的字串進行反轉,再轉為整數型,最後與符號位相乘輸出 import math class solution def reverse self,x int int label 1 ...