Question
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.
Solution
Result: Accepted Time: 6 ms
Here should be some explanations.
bool isPalindrome(char* s) {
int len = strlen(s);
char * str = malloc(sizeof(char) * len + 5);
char * tmp = str;
char * mstr = str;
bool ans = true;
while(*s)
{
if(isalnum(*s))
{
if(isdigit(*s))
*tmp = *s;
else
*tmp = (*s) | 32;
++tmp;
}
s++;
}
tmp--;
while(tmp > str)
{
if(*tmp != *str)
{
ans = false;
break;
}
--tmp;
++str;
}
free(mstr);
return ans;
}
Complexity Analytics
- Time Complexity:
- Space Complexity: