解题思路:双指针
1、特殊情况,当 x<0 时,直接返回 false
2、如果是10的整数倍,返回false 因为100不可能是回文
3、将 x 转换为字符串,设置双指针left 指向第一个数字,right 指向最后一位数字
4、对比 left、right指向的数字是否相同:

1、不同则直接返回 false
2、相同,则left++,right--,循环步骤 3
3、当left >= right 停止循环,返回 True

图片说明

import java.util.*;


public class Solution {
    /**
     * 
     * @param x int整型 
     * @return bool布尔型
     */
    public boolean isPalindrome (int x) {

        //如果是负数:-121 肯定不是回文 除了第一位其他都是正数 
        //如果是10的整数倍,返回false
        if (x < 0 && (x != 0 && x % 10 ==0)) {
            return false;
        }

        String x1 = String.valueOf(x);
        int left = 0;
        int right = x1.length() - 1;

        //121 left right最终会移动到2的位置 left = right
        //1221 left最终会移动到下标为2 right会移动下标到1的位置 此时left > right
        while (left <= right) {

            if (x1.charAt(left) != x1.charAt(right)) {
                return false;
            }

            left++;
            right--;
        }

        return true;
    }
}