# 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

# Solution

Approach 1: Two pointers.

# Code (Python)

Approach 1:

# Code (C++)

Approach 1:

class Solution {
public:
    bool isPalindrome(string s) {
        int head = 0;
        int tail = s.size() - 1;
        while (head < tail)
        {
            if (!isalnum(s[head]))
                head++;
            else if (!isalnum(s[tail]))
                tail--;
            else if (tolower(s[head]) != tolower(s[tail]))
                return false;
            else
            {
                head++;
                tail--;
            }
        }
        return true;
    }
};