给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
刚看到这道题时我非常疑惑,连回文串是什么都不知道,于是就只能依靠度娘了,查过之后恍然大悟,这也不是很难嘛。
我解决这道题的思路是:首先用正则表达式把非字母和数字的字符给删除掉,只剩下字母和数字,然后判断剩下的字符是否正向和反向一模一样。
代码:
class Solution:
def isPalindrome(self, s: str) -> bool:
s = s.lower()
s = re.sub('[^0-9a-z]','',s)
n = len(s)
for i in range(0,n//2):
if s[i] != s[n-i-1]:
return False
return True
提交代码之后一看结果我都惊呆了,超过了100%的Python3提交记录,难道其他人没做过这道题?还是系统出现了bug?哈哈哈,反正还是很开心的,拿下回文串,我们下一题再见!!!