问题描述:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
问题解析:
在这里需要处理大小写字母问题,因此需要进行大小写字母转换。然后利用双指针的方式来实现。双指针的结束条件是左指针位置超越了右指针。
class Solution{
public:
bool isPalindrome(string s)
{
string str ="";
for(int i=0;i<s.size();i++)
{
if(s[i]>='a'&&s[i]<='z') s[i]-=32;
if((s[i]<='Z'&&s[i]>='A')||(s[i]>='0'&&s[i]<='9')) str +=s[i];
} //完成小写字母向大写字母的转换
for(int left=0,right=str.size()-1;left<right;left++,right--)
{
if(str[left]!=str[right]) return false;
}
return true;
}
};