LeetCode 验证回文字符串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

输入: "race a car"
输出: false

首先一定是要排除非字母数字的影响,一种想法就是正则中的sub替代,然后前后对比即可,但是要注意单字母的情况要单独处理。

此外就是在比较暴力的处理,遇到用isalpha()和isdigit()来判断每个字符是不是字母和数字,不是跳到下一个,但是这个逻辑虽然简单,但是写起来会非常复杂,要判断控制每次非字母和数字的情况。

所以考虑还是用了正则表达式,但是还是用的不太顺。在测试的时候忘记导入re了,以及 ^ 的位置放错。

class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = re.sub(r'[^A-Za-z\d*]','',s.lower())
        n = len(s)
        if n > 1:
            for i in range(n // 2):
                if s[i] != s[n-1-i]:
                    return False
            return True
        else:
            return True
            

 

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务