diff options
Diffstat (limited to 'valid_palindrome.py')
-rw-r--r-- | valid_palindrome.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/valid_palindrome.py b/valid_palindrome.py new file mode 100644 index 0000000..2b361e0 --- /dev/null +++ b/valid_palindrome.py @@ -0,0 +1,35 @@ +# 125. Valid Palindrome + +""" +a phrase is a palindrome if, after converting all uppercase letters into +lowercase letters, and removing all non-alphanumeric characters, it reads the +same forward and backward. alphanumeric characters include only letters and +numbers. given a string 's', return true if it is a palindrome, or false +otherwise. +""" + + +class Solution(object): + def isPalindrome(self, s): + """ + :type s: str + :rtype: bool + """ + l, r = 0, len(s) - 1 + while l < r: + while l < r and not s[l].isalnum(): + l += 1 + while l < r and not s[r].isalnum(): + r -= 1 + if s[l].lower() != s[r].lower(): + return False + l += 1 + r -= 1 + return True + + +if __name__ == "__main__": + obj = Solution() + print(obj.isPalindrome(s="A man, a plan, a canal: Panama")) + print(obj.isPalindrome(s="race a car")) + print(obj.isPalindrome(s=" ")) |