链接: 验证回文字符串
class Solution {
public:
bool isLetterOrNumber(char ch)
{
return (ch>='a' && ch<='z')
|| (ch>= '0' && ch <= '9');
}
bool isPalindrome(string s) {
//大写字母转换成小写
for(auto& ch : s)
{
if(ch>= 'A' && ch <= 'Z')
{
ch+=32;
}
}
int begin = 0;
int end = s.size()-1;
while(begin < end)
{
while(begin < end && !isLetterOrNumber(s[begin]))
{
++begin;
}
while(begin < end && !isLetterOrNumber(s[end]))
{
--end;
}
if(s[begin] == s[end])
{
++begin;
--end;
}
else
{
return false;
}
}
return true;
}
};
利用快速排序的思想,一前一后的思路进行查找对比,首先进入代码程序后将大写字母全部转换为小写,后通过一前一后的思路进行查找对比,如果begin和end对应的是字母或者数字则进行比较,如果相等继续比较,如果不相等直接返回false。