首页 > 代码库 > Palindrome Number

Palindrome Number

Determine whether an integer is a palindrome. Do this without extra space.

按照palindrome的定义,负数一定不是palindrome number。而且palindrome number肯定是沿着中轴(可能为一个数或者两个相同的数,因一个数中数字的个数有关)对称的。所以很自然的想到分别比较数字的第一位数和最后一位数,第二位数和倒数第二位数,依次类推。如果有不同的,变返回false。但这里有个限制条件是without extra space,我以为是不能用任何额外的变量,所以在这个地方卡了很久。之后看网上答案,用了一个额外的变量来记录x的量级,对题目中要求的理解是关键啊。

 1 class Solution { 2 public: 3     bool isPalindrome(int x) { 4         if(x < 0) return false; 5         int d = 1; 6         while(x/d >= 10) d *= 10; 7         while(x > 0){ 8             if(x/d != x%10) return false; 9             x = (x%d)/10;10             d /= 100;11         }12         return true;13     }14 };