Here is the link to the problem: Valid Palindrome.
Problem Statement:
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.
Examples:
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.
My Solution
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
s = ''.join(char.lower() for char in s if char.isalnum())
if s == s[::-1]:
return True
else:
return False
This is quite simple one. I just used join
to remove all characters besides Alphanumeric characters. NOTE: if it was to only check for alphabets, we would have used isalpha()
instead of isalnum()
.
Later, we check if the string and its reverse is the same.