思路:
1、负数不能是回文串,溢出的数也不能是回文串(检测溢出)
2、用while和/算出数的位数
3、根据位数和%算出该数的转置数
4、判断该数和转置数是否相等,来判断一个数是不是回文数
犯的错误:
1、忘记考虑溢出
2、不知道负数不算回文数
3、循环处理上有些瑕疵
代码:
class Solution {
public boolean isPalindrome(int x) {
if(x<0)return false;
int num=x;
int k=num,count=0;
while(k!=0) {
k=k/10;
count++;
}
int reverseNum=0,i=0;
while(num!=0) {
int m=num%10;
int add=(int) (m*Math.pow(10, count-i-1));
int sum=reverseNum+add;
if(sum<reverseNum)return false;
reverseNum=sum;
num=num/10;
i++;
}
return reverseNum==x;
}
}