题目描述:
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s
,如果它是 回文串 ,返回 true
;否则,返回 false
。
题解:
class Solution:
def isPalindrome(self, s: str) -> bool:
s=s.lower()
new_s=''
for i in s:
if 'a'<=i<='z'or '0'<=i<='9':
new_s+=i
if new_s=='':
return True
p=0
q=len(new_s)-1
while p<=q:
if new_s[p]!=new_s[q]:
return False
else:
p+=1
q-=1
return True
思路:
1.首先将所有字符转成小写,用了python中的内置函数lower。
2.将字符提取出来。
3.特殊情况,空字符串直接返回True。
4.使用前后指针,如果字符相同,就向前向后移动一位,如果不同,返回False。直到两个指针重合,说明正反相同位置的字符是一样的,也就是回文串,返回True。