Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"
is a palindrome.
"race a car"
is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
#include<stdio.h>
#include<string.h>
int isPalindrome(char *s) {
int i,j;
int len=strlen(s);
char si,sj;
if(len==0) return 1;
for(i=0,j=len-1;i<=j;){
if(!(s[i]<='z' && s[i]>='a') && !(s[i]<='Z' && s[i]>='A') && !(s[i]<='9' && s[i]>='0')){
i++;
continue;
}
if(!(s[j]<='z' && s[j]>='a') && !(s[j]<='Z' && s[j]>='A') && !(s[j]<='9' && s[j]>='0')){
j--;
continue;
}
else {
si=s[i];
sj=s[j];
if(si<='Z' && si>='A') si=si+32;
if(sj<='Z' && sj>='A') sj=sj+32;
//printf("i:%c,%d,j:%c,%d\n",si,i,sj,j);
if(si!=sj) return 0;
else{
i++;
j--;
}
}
}
return 1;
}
void main(){
char *s="Aa";
printf("%d\n",isPalindrome(s));
}