9. Palindrome Number

種類 : string
難度 : easy
題目 : 09.Palindrome Number

思維邏輯

  1. 檢查字串長度是否為單數
  2. 使用字串長度驗證中間數
  3. 檢查中間數左邊數列
  4. 檢查中間數右邊數列

解法

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. 檢查前後是否回文

最佳解法

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