映入脑海的第一个想法是将数字转换为字符串,并按字符串的长度分为奇数和偶数两种情况检查字符串是否为回文。但是,这需要额外的非常量空间来创建问题描述中所不允许的字符串。
class Solution {
public:
bool isPalindrome(int x)
{
string s = to_string(x);
if(s.length()%2 !=0)
{
for(int i=0;i<(s.length()-1)/2;i++)//
{
if (s[i]!=s[s.length()-1-i])//
{
return 0;
}
}
return 1;
}
else
{
for(int i=0;i<s.length()/2;i++)
{
if (s[i]!=s[s.length()-1-i])
{
return 0;
}
}
return 1;
}
return 0;
}
};
class Solution {
public:
bool isPalindrome(int x)
{
// 负数 -> false; 0 -> true; 正数 -> 翻转一半; 末尾 0 -> false
if(x < 0 || (x % 10 == 0 && x !=0 )) return false;
else if(x == 0) return true;
else
{
int revert = 0;
while (revert < x)
{
revert = revert*10 + x%10;
x /= 10;
}
if(revert == x || revert/10 == x) return true;
else return false;
}
}
};