Determine whether an integer is a palindrome. Do this without extra space.
问题分析:判断是个数是否是回文数(正反看都一样的数字),显然负数不是回文数。解决办法就是一次判断首尾是否一样就可以了,当然 可以考虑递归,但是有迭代的方法可以解决,题目要求不能要求额外的空间。这里采用把数字转化为字符串,然后判断。实现代码如下:
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) return false;
if (x / 10 == 0) return true;
string num = to_string(x);
for (int i = 0, j = num.size() - 1; i <= j; i++, j--){
if (num[i] != num[j]) return false;
}
return true;
}
};
当然如果考虑额外空间的情况,可以依次运算来获取每一位的数字,保存到数组中,然后判断,实现代码如下:
class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
if(x/10==0) return true;
vector<int> num;
while(x){
num.push_back(x%10);
x/=10;
}
for(int i=0,j=num.size()-1;i<=j;i++,j--){
if(num[i]!=num[j]) return false;
}
return true;
}
};