- 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
**说明:**本题中,我们将空字符串定义为有效的回文串。
示例 :
输入: "A man, a plan, a canal: Panama"
输出: true
输入: "race a car"
输出: false
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
# 审题:
# 忽略字母大小写、空格、标点符号
# 双指针相向
# time: O(n)
# space: O(1)
if len(s) < 2:
return True
s = s.strip()
l, r = 0, len(s) - 1
while l < r:
if not s[l].isalnum():
# 判断不是字母和数字
l += 1
elif not s[r].isalnum():
r -= 1
elif s[l].lower() == s[r].lower():
l += 1
r -= 1
else:
return False
return True