算法原链接
https://leetcode-cn.com/problems/palindrome-number/
解法
package mainimport ("fmt""math""strconv")func main() {x := 121r := isPalindrome1(x)fmt.Println(r)}// 字符串解法func isPalindrome(x int) bool {if x < 0 {return false}if x < 10 {return true}s := strconv.Itoa(x)l := len(s)var left, right intif l%2 == 0 {left = l/2 - 1right = l / 2} else {middle := float64(l) / float64(2)left = int(middle) - 1right = int(math.Ceil(middle))}left, right = test(s, left, right)return left == 0 && right == len(s)-1}func test(s string, left, right int) (int, int) {for ; left >= 0 && right < len(s) && s[left] == s[right]; left, right = left-1, right+1 {}return left + 1, right - 1}// 官方解法func isPalindrome1(x int) bool {if x < 0 || (x != 0 && x%10 == 0) {return false}revertedNumber := 0for revertedNumber < x {revertedNumber = revertedNumber*10 + x%10x /= 10}return x == revertedNumber || x == revertedNumber/10}
