问题描述:
- 给定一个字符串
s
,验证s
是否是回文串。- 只考虑字母和数字字符,可以忽略字母的大小写。
- 将空字符串定义为有效的回文串。
核心思路:
- 该题的解法很直白,前后双指针往中间移动即可。
代码实现:
class Solution
{
public:
bool isPalindrome(string s)
{
int l = 0, r = s.size()-1;
while(l < r)
{
while(l < r and !isalnum(s[r])) // isalnum = isalpha + isdigit
--r;
while(l < r and !isalnum(s[l]))
++l;
if(l >= r) return true;
if(toupper(s[l++]) != toupper(s[r--]))
return false;
}
return true;
}
};