题目 int型的回文数
https://leetcode-cn.com/problems/palindrome-number 
解法 
 解法一: 普通解法
 
 整数转为字符串 ,然后将字符串分割为数组,只需要循环数组的一半长度进行判断对应元素是否相等即可
1 2 3 4 5 6 7 8 9 10 11 12 class  Solution      public  boolean  isPalindrome (int  x)           String str = String.valueOf(x);         int  len = str.length();         for (int  i=0 ; i<len/2 ; i++) {             if (str.charAt(i) != str.charAt(len -1  -i)) {                 return  false ;             }          }         return  true ;     } } 
解法二: 进阶解法—数学解法
 
举个例子:1221 这个数字。
通过计算 1221 / 1000, 得首位1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class  Solution      public  boolean  isPalindrome (int  x)                    if  (x < 0 ) return  false ;         int  div = 1 ;                  while  (x / div >= 10 ) div *= 10 ;         while  (x > 0 ) {             int  left = x / div;             int  right = x % 10 ;             if  (left != right) return  false ;             x = (x % div) / 10 ;             div /= 100 ;          }         return  true ;     } } 
解法三:进阶解法—巧妙解法
所以这个解法的操作就是 取出后半段数字进行翻转。
这里需要注意的一个点就是由于回文数的位数可奇可偶,所以当它的长度是偶数时,它对折过来应该是相等的;当它的长度是奇数时,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整)。
具体做法如下:
每次进行取余操作 ( %10),取出最低的数字:y = x % 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 class  Solution  public :    bool isPalindrome (int  x)   {                                                      if  (x < 0  || (x % 10  == 0  && x != 0 )) {             return  false ;         }         int  revertedNumber = 0 ;         while  (x > revertedNumber) {             revertedNumber = revertedNumber * 10  + x % 10 ;             x /= 10 ;         }                                    return  x == revertedNumber || x == revertedNumber / 10 ;     } }