有几种方法,这种最快
public boolean isPalindrome(int x) {
if(x < 0) return false;
int palindromeX = 0;
int input = x;
while(input>0){
palindromeX = palindromeX*10 + (input % 10);
input /= 10;
}
return palindromeX==x;
}
这种也不慢,思路是每次比较x的第一位和最后一位,取出最后一位的方法是对10取余,取出第一位的方法是对第一位求整数商。然后x去掉最后一位和第一位,
public boolean isPalindrome(int x) {
if(x < 0) return false;
if(x < 10) return true;
int div = 10;
while(x / div >= 10) {
div *= 10;
}
while(div>=10 && x/div==x%10){ //注意10022001的情况,这里其实很容易遗漏,所以不如上一种方法严密。。
x = (x%div) / 10; // X%div去掉第一位,再除以10去掉最后一位
div /= 100; //因为x去掉了头尾缩小了100倍,所以div变成原来的百分之一
}
if(div < 10) return true;
else return false;
}