思路:
法一:数字转字符串,从两边往中间遍历,进行字符比较,也就是双指针。
法二:通过除法、模运算,得到数字的每一位,存入数组,再用双指针。
public boolean isPalindrome(int x) {
String str =String.valueOf(x);
int i = 0;
int j = str.length()-1;
while(i <= j && str.charAt(i) == str.charAt(j)){
i++;
j--;
}
return i > j;
}
//进阶--不转字符串
public boolean isPalindrome(int x) {
if(x < 0) return false;
int[] rec = new int[11];
int r = 0;//数字长度
while(x != 0){
rec[r++]=x%10;
x/=10;
}
r--;
int l = 0;
while(l <= r && rec[l] == rec[r]){
l++;
r--;
};
//while(l <= r && rec[l++] == rec[r--]){}; 错误写法 l++ r-- 两个rec不相等时也会执行,例如用例:12
if(l > r) return true;
return false;
}