125. Valid Palindrome
# O(n) time || O(1) space
def is_palindrome(self, s: str) -> bool:
    low, high = 0, len(s) - 1
    while low <= high:
        while low < len(s) - 1 and not s[low].isalnum():
            low += 1
        while high >= 0 and not s[high].isalnum():
            high -= 1
        if s[low].lower() != s[high].lower():
            return False
        low, high = low + 1, high - 1
    return True