问题描述:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
示例:
"A man, a plan, a canal: Panama"
is a palindrome.
"race a car"
is not a palindrome.
问题分析:
求解一个字符串是否为回文字符串。这里要注意,字符串处理常用的几个函数----isalnum 和 tolower函数,它们引用自“cctype”头文件。
主要解法还是两个指针遍历,寻找有效字符,对比是否符合回文字符串要求(这里忽略大小写)。
过程详见代码:
class Solution {
public:
bool isPalindrome(string s) {
int begin = 0, end = s.length() - 1;
while(begin < end)
{
if(!isalnum(s[begin])) begin++;
else if(!isalnum(s[end])) end--;
else{
if (tolower(s[begin++]) != tolower(s[end--])) return false;
}
}
return true;
}
};