解题思路:双指针
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; } }