125. Valid Palindrome
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama"
Output: true
Example 2:
Input: "race a car"
Output: false
题目链接:https://leetcode.com/problems/valid-palindrome/
解法:双指针对碰
class Solution {
public:
bool isPalindrome(string s) {
int len = s.length(), l = 0, r = len-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){
if(!isValid(s[l],s[r])) return false;
else{
++l;
--r;
}
}
}
return true;
}
bool isValid(char a, char b){
int ai = -1,bi=-1;
if(isupper(a)) ai = a-'A';
else ai = a-'a';
if(isupper(b)) bi=b-'A';
else bi=b-'a';
return ai==bi;
}
};