Valid Palindrome
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.
Solution: Linear traversal using for loop
bool isPalindrome(string s) {
if (s.size() == 0) return true;
for (int i=0, j=s.size()-1; i<j; i++, j--) {
while (i < j && !isalnum(s[i])) i++;
while (i < j && !isalnum(s[j])) j--;
if (tolower(s[i]) != tolower(s[j])) return false;
}
return true;
}
Solution: Linear traversal using while loop
bool isPalindrome(string s) {
if (s.size() == 0) return true;
int i=0, j=s.size()-1;
while (i < j) {
while (i < j && !isalnum(s[i])) i++;
while (i < j && !isalnum(s[j])) j--;
if (tolower(s[i]) != tolower(s[j])) return false;
i++, j--;
}
return true;
}