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 };

 

posted on 2014-08-09 17:55  Ryan-Xing  阅读(183)  评论(0)    收藏  举报