125. 验证回文串python
问题描述
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
解释:"amanaplanacanalpanama" 是回文串
示例 2:
输入: "race a car"
输出: false
解释:"raceacar" 不是回文串
提示:
- 1 <= s.length <= 2 * 10**5
- 字符串 s 由 ASCII 字符组成
解答
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
if len(s) == 0:
return True
s = list(s.lower())
s = [i for i in s if i.isalnum()]
i = 0
j = len(s) - 1
while i < j:
if s[i] != s[j]:
return False
i += 1
j -= 1
return True
运行结果
心得
- 主要是字符串的初始化处理,s.isalnum()函数判断字符串只有数组或者字母构成
- 双指针的速度要比栈快一点,因为可以在中间停止