从左读与从右读是一样的就是回文数
121是回文数 -121不是回文数(121-)
因此显而易见负数必然不是回文数,0必然是回文数。再推而广之易得,能被10整除的数也必然不是回文数。
判断回文数的关键是前一半的数字与后一半的数字相等,相较于把所有的数字都翻转再判断效率更高。
class Solution
public boolean isPalindrome(int x) {
if(x==0)
return true;
if(x<0||x%10==0)
return false;
int res = 0;
while(x>res){
res=res*10+x%10;
x/=10;
}
return x==res||x==res/10;
}
}
得到从右往左读的数字就是不断乘10再取余
偶数位数:x==res;奇数位数x==res/10