【leetcode】验证回文串

参考题解

class Solution:
    def isPalindrome(self, s: str) -> bool:
        n = len(s)
        left, right = 0, n - 1
        
        while left < right: # Note(1)
            while left < right and not s[left].isalnum(): # Note(2)
                left += 1
            while left < right and not s[right].isalnum(): # Note(2)
                right -= 1
            print(left, right)
            if left < right: # Note(3)
                if s[left].lower() != s[right].lower(): # Note(5)
                    return False
                left, right = left + 1, right - 1 # Note(4)
            print(left, right)

        return True

题目容易忽略的地方是:
Note(1)和Note(3)用left < rightleft <= right都是可以的,因为Note(4)保证了不会出现left==right的情况吧

Note(2)这里原来python或者其它的编程语言都有判断字符串是否只包含子母或者数字的内置函数呀~学习了学习了
isalnum()判断字符串是否只包含子母或者数字
isalpha()判断字符串是否只包含子母
isdigit()检测字符串是否只由数字组成

Note(5)这里字符.lower()的字符是字母或者数字的时候都可以判断大小写哟

你可能感兴趣的:(python,leetcode,leetcode,算法,python)