Friday, March 1, 2019

LeetCode 125. Valid Palindrome

'''
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