種類 : string
難度 : easy
題目 : 09.Palindrome Number
思維邏輯
- 檢查字串長度是否為單數
- 使用字串長度驗證中間數
- 檢查中間數左邊數列
- 檢查中間數右邊數列
解法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| def check_palindrome(num): num_str = str(num) if len(num_str) % 2 != 1: return False if num_str[int(len(num_str)/2)] != str(int(len(num_str)/2) + 1): return False for i in range(int(len(num_str)/2)): if str(i+1) != num_str[i]: return False if str(i+1) != num_str[-(i+1)]: return False return True
x = 1234321 print(check_palindrome(x))
|
難點
- 檢查字串長是否為單數
- 檢查中間數
- 檢查前後是否回文
最佳解法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Solution: def isPalindrome(self, x: int) -> bool: if x < 0: return False
reversed_num = 0 temp = x
while temp != 0: digit = temp % 10 reversed_num = reversed_num * 10 + digit temp //= 10
return reversed_num == x
|