判断回文数,方法有很多。但这里题目要求“Do this without extra space.”也就是说并不建议把整数变为数组再一位一位地判断。所以这里我沿用第七题Discuss版里某位仁兄的做法,先把这个数倒转,再判断它是否跟原来相同。
以下是AC的代码:
class Solution
{
public:
bool isPalindrome(int x)
{
if(x<0)
return false;
int reverse=0,origin=x;
while(x)
{
reverse=reverse*10+x%10;
x/=10;
}
if(reverse==origin)
return true;
else
return false;
}
};
值得说一下的是,一开始我是把负数变为正数再进行回文判断,然后就被WA了。。。
仔细想想也是,所有的负数都不是回文数,因为多了个负号。。
这里最大的收获就是能把第七题里新学到的做法运用了一遍。还有就是判断回文数的话这种方法时间、空间的消耗都小,值得推荐。