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]