4.leetcode题目9:Palindrome Number

这道题目不难,但是要屡清楚还是蛮有点复杂的


首先,负数不是回数,0是回数,要单独考虑这两种情况。

方法:比较整数的头和尾,相等则循环,不相等则return false;

取头尾的办法是:

 int n=1;
        while(x/n>=10){
            n=n*10;
        }//这算是一种比较好的表示方法了,速度快

我想到的方法是:

int n=0,a=x;

while(a/10>=1){

x=x/10;

n++;

n=n/100;

}

确定数x的位数,比如1234,对应n=1000;

第一位x/n,尾位则是x%10。

然后,去掉当前x的头和尾,组成新的数x,比如x=12321———>x=232,循环。

 x=x%n;//去头
            x=x/10;//去尾

这种方式是我没想到的

我想到的方法是连着上面我想到的那一段的:

p=x/pow(10,n);

q=x%10;

x=x-p*pow(10,n)-q;

n=n-2;


总之多学习别人的代码!!!

最后运行如上图,不是最快,我想不到更快的了

你可能感兴趣的:(4.leetcode题目9:Palindrome Number)