首先我们可以将整数转为字符串,然后对字符串进行判断。
class Solution
{
public:
bool isPalindrome(int x)
{
bool result;
if (x < 0)
{
return false;
}
stringstream ss;
ss << x;
string str, reversedStr;
ss >> str;
int strSize = str.size();
for (int index = str.size() - 1; index >= 0; index--)
{
reversedStr.push_back(str[index]);
}
result = str == reversedStr;
return result;
}
};
另外一种数学解法。
class Solution
{
public:
bool isPalindrome(int x)
{
bool result;
//避免例如x = 110的情况
if (x < 0 || (x != 0 && x % 10 == 0))
{
return false;
}
int reverseNumber = 0;
//考虑一下为什么x = 21时,不会出错
while (x > reverseNumber)
{
reverseNumber = reverseNumber * 10 + x % 10;
x = x / 10;
}
//分别是偶数位和奇数位的情况
result = (x == reverseNumber) || (x == reverseNumber / 10);
return result;
}
};