leetcode-09-回文数

回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

这个思路还是很简单的。比如12321
比较最高位和最低位。然后去掉最高位和最低位。

1和1比较,2和2比较。

注意点:比如1221找到最高位

//比如大于两位数的x,而且这次我假设123123
//判断
int x=123123;
int div=1;
//如果x是个位数,那就不要处理了
while(x/div>=10){
	div*=10;
}

//上面就是要找到100000

以下是完整的代码

class Solution {
    public boolean isPalindrome(int x) {
        //采用最高位和最低为比的思想
        //这题最重要的就是算出最高位和最低为。没有任何算法的考察
        if(x<0) return false;
        int len=1;
        //例如1221
        int num=x;
        while(num/len>=10){
            len*=10;
        }
        //122余2,12于2,1于2
        //   10    100   1000
        //left:最高位 right:最低为

        while(num!=0){
            int left=num/len;//得到最高位的数字1221/1000=1
            int right=num%10;//找到个位数,也就是right
            if(left!=right){
                return false;
            }
            
            //如果left==right,接着比左边第二个数和右边第二个数
            //去掉最高位--->再除10去掉最右边的数
            num=(num-left*len)/10;
            len/=100;
        }
        return true;
    }
}
发布了16 篇原创文章 · 获赞 0 · 访问量 229

猜你喜欢

转载自blog.csdn.net/weixin_44110100/article/details/105478066