题目
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false
解题思路
class Solution: def isPalindrome(self, s: str) -> bool: #数组 # sList = [] # for i in s: # if i.isalnum():#判断是否是字母 # sList.append(i.lower())#变成小写并写入 # midNum = len(sList)//2 # if sList[:midNum] == sList[::-1][:midNum]: # return True # return False #双指针 left = 0 right = len(s)-1 while right - left > 0: # print(s[left]) # print(s[right]) if s[left].isalnum() and s[right].isalnum() and s[left].lower() == s[right].lower(): left += 1 right -= 1 elif s[left].isalnum() == False: left += 1 elif s[right].isalnum() == False: right -= 1 else: return False return True