力扣验证回文串--python实现

1. 验证回文串

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

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

示例 1:

输入: “A man, a plan, a canal: Panama”
输出: true
示例 2:

输入: “race a car”
输出: false

1.1 方法1:

回文字符串就是正写反着写是一样的。
思路 先将字符串转成大小写一致的字符串,然后利用正则表达式,re.findall(),找出去掉其他符号的字符串,就得到得了一个我们需要的字符串,这里取了个巧,正好通过了,因为\w 匹配字母或数字或下划线或汉字0-9、a-z、A-Z、_(下划线)、汉字和其他国家的语言符号。

class Solution:
    def isPalindrome(self, s: str) -> bool:
        reg=r"\w"
        s=s.lower()
        s=re.findall(reg,s)
        t=""
        for i in s:
            t+=i
        return t[::]==t[::-1]

1.2 方法2:

回文字符串就是正写反着写是一样的。
思路 利用了filter过滤器,过滤不需要的字符,然后加到s这个字符串中,然后和上面一样的方法。

class Solution:
    def isPalindrome(self, s: str) -> bool:
		    if not len(s):
            	return True
        	s = "".join(filter(str.isalnum, s)).lower()  #filter过滤器
        	return s == s[::-1]

1.3 方法3:

回文字符串就是正写反着写是一样的。
思路 和第一个差不多,但是大佬写的代码就是简洁。

class Solution:
    def isPalindrome(self, s: str) -> bool:
		al = re.sub("[^A-Za-z0-9]+", "", s).lower()
        #正则匹配
        return alphanumeric == al[::-1]

猜你喜欢

转载自blog.csdn.net/weixin_41781408/article/details/88110167