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


京公网安备 11010502036488号