
bool isPalindrome(string s) {
if(s.size()==0) return true;
int left=0,right=s.size()-1;
while(left<=right){
if(isAphaNum(s[left])&&isAphaNum(s[right])){
if(to_upper(s[left])==to_upper(s[right]))
{
left++;
right--;
}else
return false;
}else if(!isAphaNum(s[left])){
left++;
}else right--;
}
return true;
}
bool isAphaNum(char &ch){
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch>='0'&&ch<='9'))
return true;
printf("false");
return false;
}
char to_upper(char c){
if(c>='a'&&c<='z'){
return c-'a'+'A';
}
return c;
}
bool isPalindrome(string s) {
if(s.size()==0) return true;
int left=0,right=s.size()-1;
while(left<=right){
if(isAphaNum(s[left])&&isAphaNum(s[right])){
if((s[left]+32-'a')%32!=(s[right]+32-'a')%32)
return false;
left++;
right--;
}else if(!isAphaNum(s[left])){
left++;
}else right--;
}
return true;
}
bool isAphaNum(char ch){
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch>='0'&&ch<='9'))
return true;
return false;
}
bool isPalindrome(string s) {
if(s.size()==0) return true;
int left=0,right=s.size()-1;
while(left<=right){
if(isalnum(s[left])&&isalnum(s[right])){
if((s[left]+32-
return false;
left++;
right--;
}else if(!isalnum(s[left])){
left++;
}else right--;
}
return true;
}
马拉车算法