1. 转换为字符串进行比较

      1. func isPalindrome(x int) bool {
      2. if x < 0 {
      3. return false
      4. }
      5. if x>= 0 && x < 10 {
      6. return true
      7. }
      8. str := strconv.Itoa(x)
      9. i := 0
      10. j := len(str) -1
      11. for; i < j; {
      12. if str[i] != str[j] {
      13. return false
      14. }
      15. i++
      16. j--
      17. }
      18. return true
      19. }
    2. 获取数字的一半进行比较。可以绕开数字大小限制

      func isPalindrome(x int) bool {
       if x < 0 || (x % 10 == 0 && x != 0) {
           return false
       }
      
       if x >= 0 && x < 10 {
           return true
       }
      
       revertedNumber := 0
       for ;x > revertedNumber; {
           revertedNumber = revertedNumber * 10 + x % 10
           x /= 10
       }
      
       // 如果数字长度为奇数,就需要除10再进行比较。
       return x == revertedNumber || x == revertedNumber / 10
      }