题目:判断一个数是不是回文数
简单题,不用转换为String的方法做,浪费空间。
思路:
sum=sum*10+x%10; 效果等同于将sum之前的值左移一位,然后加上x丢掉的一位
x=x/10; 效果等同于去除x的最后一位
如果为奇数,回文数会有sum==x为true,如果为偶数,sum/10==x为true。
注意点:
如果x为0结尾的数,只有0满足条件,可以一开始排除除0以外以0结尾的数。
也可以判定循环中如果出现sum=0而x!=0,此时原数肯定为除0以外以0结尾的数,return false。
贴上代码
class Solution {
public boolean isPalindrome(int x) {
if(x<0||(x!=0&&x%10==0))
{
return false;
}
int r=0;
while(x>r)
{
r=r*10+x%10;
x=x/10;
}
return r==x||x==(r/10);
}
}