判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
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 所以不是回文數。那麼如何判斷乙個整數是不是回文數?將數字轉換為字串,然後反轉字串,再與之前的比較看是否相等。將整數最高位的數字取出,和整數末位的數比較是...