# 验证回文字符串
# 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
# 本题中,我们将空字符串定义为有效的回文串。
class Solution(object):
def is_palindrome(self, s):
"""
:type s: str
:rtype: bool
"""
# if not s: # s为空是假,not s为真,走下面True;s为非空是真,not s为假,跳过下面
# return True
# a = reversed(list(s)) # reversed 反转字符串
# 方法一: 正则表达
# import re
# s = re.sub('[^a-z0-9]','',s.lower())
# return s == s[::-1]
# 方法二:
s = list(filter(str.isalnum, s.lower())) # 相等返回Trued,不相等返回False
return s == s[::-1]
# isalnum() 检测字符串是不是由字母和数字组成(作为arg2的筛选条件)
# filter()是一个高阶函数,其关键在于arg1的筛选函数。 filter()是一个惰性函数,需要套用list()来迫使其完成运算。
# filter()将符合str.isalnum条件的s中的元素放入列表中。条件是str.isalnum 只有数字和字母
# s.lower()字符串缩小,把所有的大写字母转为小写字母