【題目描述】
判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。你能不將整數轉為字串來解決這個問題嗎?
【解題思路】
首先,排除不可能的情況:
對於剩下的數字,121,考慮整數反**
ori=x
while x :
reverse = reverse*10 + x%10
x = x/10
最終判斷ori和reverse是否相等即可。
【優化思路】:判斷一半即可,當reverse>=x的時候,證明至少已經超過一半。此時有兩種情況:
1221 reverse=12,x=12,判斷x是否等於reverse
12121 reverse=121,x=12,判斷reverse/10是否等於x
用python實現的的**如下:
class solution(object):
def ispalindrome(self, x):
""":type x: int
:rtype: bool
"""if x<0 or (x%10==0 and x!=0):
return false
reverse = 0
while x > reverse:
reverse = reverse*10 + x%10
x = x/10
if x==reverse or reverse/10==x:
return true
return false
力扣9 回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。這是我自己寫的版本。但是和官方題解相比還是差了點。public boolean ispalindrome int x return y x public bool ispalindrome int x int r...
解題力扣9 回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數 示例一輸入 121 輸出 true 示例二輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例三輸入 10 輸出 false 解釋 從右向左讀,為 01...
力扣9 回文數C
先排除幾個特殊情況 0是回文數 負數都不是回文數 凡是能被10整除的 10,100,1000 都不是回文數。然後,因為int表示範圍有限,既然是回文數 左右兩邊是反過來的 那麼,這樣比較一半就好了。用int型的陣列num將輸入的數x轉換為陣列,然後,從中間斷開,比較左右兩邊是否相等,即可。bool ...