题目链接:https://leetcode.cn/problems/valid-palindrome/
思路如下:
双指针,一首一尾,相向扫描,每次将两个指针分别移动到下一个字母字符或数字字符,再判断这两个指针指向的字符是否相同。
C++代码如下:
class Solution {
public:
bool isPalindrome(string s) {
for (int l = 0, r = s.size() - 1; l < r; l++, r--) {
while (l < r && !isalnum(s[l])) l++;
while (l < r && !isalnum(s[r])) r--;
if (l < r && tolower(s[l]) != tolower(s[r])) return false;
}
return true;
}
};