【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()的字符是字母或者数字的时候都可以判断大小写哟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值