解决方法一
class Solution{
public:
bool isPalindrome(string s)
{
transform(s.begin(),s.end(),s.begin(),::tolower);
int left=0,right=s.length()-1;
while(left<right)
{
if(!((s[left]<='z'&&s[left]>='a')||s[left]>=0&&s[left]<=9)&&left<right)
left++;
else if(!((s[right]<='z'&&s[right]>='a')||s[right]>=0&&s[right]<=9)&&left<right)
right--;
else if(s[left]!=s[right])
return false;
else
{
left++;
right--;
}
}
return true;
}
};
解决方法二:
利用c++中的isalnum()函数检测一个字符是否是数字或者字母
class Solution{
public:
bool isPalindrome(string s)
{
int left=0,right=s.length()-1;
transform(s.begin(),s.end(),s.begin(),::tolower);
while(left<right)
{
if(isalnum(s[left])==false)
left++;
else if(isalnum(s[right])==false)
right--;
else if(s[left]==s[right])
{
left++;
right--;
}
else
return false;
}
return true;
}
};