剑指 Offer II 018. 有效的回文
小于 1 分钟
剑指 Offer II 018. 有效的回文
- 标签:双指针、字符串
- 难度:简单
题目链接
题目大意
给定一个字符串 s
。
要求:判断是否为回文串。(只考虑字符串中的字母和数字字符,并且忽略字母的大小写)
解题思路
左右两个指针 start
和 end
,左指针 start
指向字符串头部,右指针 end
指向字符串尾部。先过滤掉除字母和数字字符以外的字符,在判断 s[start]
和 s[end]
是否相等。不相等返回 False
,相等则继续过滤和判断。
代码
class Solution:
def isPalindrome(self, s: str) -> bool:
n = len(s)
start = 0
end = n - 1
while start < end:
if not s[start].isalnum():
start += 1
continue
if not s[end].isalnum():
end -= 1
continue
if s[start].lower() == s[end].lower():
start += 1
end -= 1
else:
return False
return True