所谓的回文数字就是诸如123321,12344321之类的数字。题目要求不能有额外的空间,所以转成String就不用想了。
首先要判断是不是回文数,要考虑几种特殊情况:负数肯定不是,例如10,20,320之类的末尾为0的肯定不是,但是0 是回文数。所以排除了这几种情况之后可以将数X分别除以10和取10的余数res,将余数res*10加上新的余数res,循环直到余数所组成的数>除以10后的X。这时判断x和res是否相等。例如偶回文数12344321此时x和res都是1234所以是回文数,奇回文数例如12321此时x=12,res=123.对res除以10再比较,就可以得到正确的判断结果了。
java实现代码如下:
public boolean isPalindrome(int x) {
int res = 0;
if(x==0)
return true;
if(x<0||x%10==0)
return false;
else
{
while(x>res)
{
res = res*10+x%10;
x = x/10;
System.out.println(res+" "+x);
}
if(res==x)
return true;
else
{
res = res/10;
if(res ==x)
return true;
else
return false;
}
}
}