题目描述
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
算法1
双指针 Y老师教导我们要少刷水题
C++ 代码
class Solution {
public:
bool isPalindrome(string s) {
transform(s.begin(), s.end(), s.begin(), ::tolower);
int l =0; int r = s.size()-1;
while(l < r){
while(l <r && !isalpha(s[l]) && !isdigit(s[l])) l++;
while(l <r && !isalpha(s[r]) && !isdigit(s[r])) r--;
if(l<r && s[l] != s[r]) return false;
l++;r--;
}
return true;
}
};