leetcode 回文數(簡單題)

2021-10-07 02:04:24 字數 1239 閱讀 4971

判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

ps:你能不將整數轉為字串來解決這個問題嗎?

一刷:時間複雜度o(logn),空間複雜度o(1),但是這個解法最少迴圈1次最多迴圈1.5次,可以進行優化

class solution:

def ispalindrome(self, x: int) -> bool:

if x < 0:

return false

i = 1

quotient = x

while(quotient != 0):

i *= 10

quotient = x // i

remainder1, quotient2 = x, x

while(i != 1):

i //= 10

quotient1, remainder1 = divmod(remainder1, i)

quotient2, remainder2 = divmod(quotient2, 10)

if quotient1 != remainder2:

return false

return true

可以反轉一半的數字進行比較,停止條件為當前數字大於沒反轉的部分。這樣每次迴圈0.5次就能得出結果了

class solution:

def ispalindrome(self, x: int) -> bool:

# 極端情況

if x < 0:

return false

if x == 0:

return true

if x % 10 == 0:

return false

reverse = 0

quotient = x

while(quotient > reverse):

quotient, remainder = divmod(quotient, 10)

reverse = reverse*10 + remainder

print(reverse,quotient)

if quotient == reverse:

return true

elif reverse // 10 == quotient:

return true

else:

return false

LeetCode 回文數 簡單題

判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 從右向左...

leetcode 簡單 第三題 回文數

判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 從右向左讀...

LeetCode演算法題 回文數

回文數,即乙個整數,將它各位上的數字從左到右反過來得到的數字依然等於原來的整數。如1221反過來還是1221,所以它是回文數。而 11反過來是11 所以不是回文數。那麼如何判斷乙個整數是不是回文數?將數字轉換為字串,然後反轉字串,再與之前的比較看是否相等。將整數最高位的數字取出,和整數末位的數比較是...