【Leetcode】回文数字Palindrome

      所谓的回文数字就是诸如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;
        	}
        }
    }

点赞