Solution 1
class Solution:
def isPalindrome(self, s: str) -> bool:
if len(s) == 0:
return True
l = 0
r = len(s) - 1
while 0 <= l < r < len(s):
while 0 <= l < r < len(s) and not s[l].isalnum() :
l += 1
while 0 <= l < r < len(s) and not s[r].isalnum():
r -= 1
if s[l].lower() != s[r].lower():
return False
l += 1
r -= 1
return True
Time complexity is O(n). Space complexity is O(1).
Solution 2
class Solution:
def isPalindrome(self, s: str) -> bool:
s = "".join(filter(lambda c: c.isalnum(), s.lower()))
return s == s[::-1]
Time complexity is O(n). Space complexity is O(1).