题目
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
怎么处理[忽略字母的大小写的条件]
算法思想
将字母统一转化为小写,然后首尾依次比较判断。
class Solution {
public:
bool _isalphaanddigit(char a)
{
if((a >= '0' && a <= '9')
||(a >= 'a' && a <= 'z')
|| (a >= 'A' && a <= 'Z'))
return true;
else
return false;
}
bool isPalindrome(string s) {
if(s.empty())
{
return true;
}
for(int i = 0; i < s.size(); ++i)
s[i] = tolower(s[i]);
int sz = s.size();
int begin = 0, end = sz-1;
while(begin < end)
{
while(begin < end && !_isalphaanddigit(s[begin]))
++begin;
while(begin < end && !_isalphaanddigit(s[end]))
--end;
if(s[begin] != s[end])
{
return false;
}
++begin;
--end;
}
return true;
}
};