Description
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
1 2 3
| Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
|
1 2 3
| Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
|
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| func isPalindrome(x int) bool { if x < 0 { return false }
copy := x reverse := 0
for copy > 0 { reverse = reverse*10 + copy%10 copy /= 10 }
return x == reverse }
|
Note
假設有以下參數:
說明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| copy 為 121: reverse 為 0:
把 reverse 乘以 10 加上 copy 的尾數為 1,把 copy 除以 10。
copy 為 12: reverse 為 1:
把 reverse 乘以 10 加上 copy 的尾數為 2,把 copy 除以 10。
copy 為 1: reverse 為 12:
把 reverse 乘以 10 加上 copy 的尾數為 1,把 copy 除以 10。
copy 為 0: reverse 為 121:
判斷 reverse 是否等於 x。
最終返回:true
|
Code