125. 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.

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: Two Pointers

class Solution(object):
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        low = 0
        high = len(s) - 1
        while low < high:
            left = s[low]
            right = s[high]
            if not left.isalpha() and not left.isdigit():
                low += 1
            elif not right.isalpha() and not right.isdigit():
                high -= 1
            elif left.lower() == right.lower():
                low += 1
                high -= 1
            else:
                return False
        return True

results matching ""

    No results matching ""