From 43b54571cfee95c7be8e973ff5f81d6b2dd40793 Mon Sep 17 00:00:00 2001 From: Sangeeth Sudheer Date: Sat, 23 Apr 2022 18:23:57 +0530 Subject: [PATCH] valid-palindrome py3 --- 0125_valid-palindrome/README.md | 30 +++++++++++++++++++++++ 0125_valid-palindrome/python3/solution.py | 23 +++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 0125_valid-palindrome/README.md create mode 100644 0125_valid-palindrome/python3/solution.py diff --git a/0125_valid-palindrome/README.md b/0125_valid-palindrome/README.md new file mode 100644 index 0000000..6bb6ceb --- /dev/null +++ b/0125_valid-palindrome/README.md @@ -0,0 +1,30 @@ +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 letters and numbers. + +Given a string `s`, return `true` _if it is a **palindrome**, or_ `false` _otherwise_. + +**Example 1:** + + Input: s = "A man, a plan, a canal: Panama" + Output: true + Explanation: "amanaplanacanalpanama" is a palindrome. + + +**Example 2:** + + Input: s = "race a car" + Output: false + Explanation: "raceacar" is not a palindrome. + + +**Example 3:** + + Input: s = " " + Output: true + Explanation: s is an empty string "" after removing non-alphanumeric characters. + Since an empty string reads the same forward and backward, it is a palindrome. + + +**Constraints:** + +* `1 <= s.length <= 2 * 105` +* `s` consists only of printable ASCII characters. \ No newline at end of file diff --git a/0125_valid-palindrome/python3/solution.py b/0125_valid-palindrome/python3/solution.py new file mode 100644 index 0000000..d11854d --- /dev/null +++ b/0125_valid-palindrome/python3/solution.py @@ -0,0 +1,23 @@ +class Solution: + def isPalindrome(self, s: str) -> bool: + i = 0 + j = len(s) - 1 + + while i < j: + left = s[i].lower() + right = s[j].lower() + + if not left.isalnum(): + i += 1 + continue + elif not right.isalnum(): + j -= 1 + continue + + if left != right: + return False + + i += 1 + j -= 1 + + return True