迴文數
PS:不考慮用數字轉字符串的方式
- 解法一:整數反轉,判斷是否相等。先得到整數的反轉結果,然後判斷反轉結果是否與整數相等即可。但是,沒有考慮溢出問題。
- 執行用時百分比:81.12%
- 內存消耗百分比:5.01%
class Solution:
def isPalindrome(self, x: int) -> bool:
# 負數和以 0 結尾的正整數均不是迴文數
if x < 0 or (x != 0 and x % 10 == 0):
return False
reversed_target, target = 0, x
while target:
reversed_target = reversed_target *10 + target % 10
target //= 10
return reversed_target == x
- 解法二:反轉一半數字。爲了解決解法一中的溢出問題,考慮反轉數字的一半。
- 執行用時百分比:97.00%
- 內存消耗百分比:5.01%
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0 or (x != 0 and x % 10 == 0):
return False
reversed_target = 0
while x > reversed_target:
reversed_target = reversed_target * 10 + x % 10
x //= 10
# 需要注意處理數字位數爲奇數的情況
return x == reversed_target or x == reversed_target // 10