'''
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
'''
class Solution:
#80ms, 13.6MB
def isPalindrome1(self, s: str) -> bool:
digits = '1234567890'
lower = 'qwertyuiopasdfghjklzxcvbnm'
upper = 'QWERTYUIOPASDFGHJKLZXCVBNM'
ht = {i:j for i, j in zip(upper, lower)}
ss= ''
for i in s:
if i in digits:
ss += i
elif i in lower:
ss += i
elif i in upper:
ss += ht[i]
n = len(ss)//2
if n == 0: return True
print (ss,'-', ss[:n],'-', ss[-n:][::-1])
return ss[:n] == ss[-n:][::-1]
#60ms, 13.6MB
def isPalindrome(self, s: str) -> bool:
s = s.lower()
ss= ''
for i in s:
if i.isalnum(): ss += i
n = len(ss)//2
if n == 0: return True
return ss[:n] == ss[-n:][::-1]
No comments:
Post a Comment