aboutsummaryrefslogtreecommitdiff
path: root/valid_palindrome.py
diff options
context:
space:
mode:
Diffstat (limited to 'valid_palindrome.py')
-rw-r--r--valid_palindrome.py35
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=" "))