# 利用双指针,一次遍历 ,求出結果 class Solution: def isPalindrome(self, s: str) -> bool: # 界定自变量,接受字符串数组的长短 length = len(s) # 长短不大于1立即回到真 if length <= 1:return True # 界定2个表针, 各自偏向字符串数组头和尾 index1,index2 = 0,length - 1 while index1 <= index2: # 分辨标识符是不是为英文字母或是数据 if not s[index1].isalnum(): index1 = 1 continue if not s[index2].isalnum(): index2 -= 1 continue # 分辨2个标识符是不是同样 if s[index1].lower() != s[index2].lower(): return False index1 = 1 index2 -= 1 return True
A = Solution() print(A.isPalindrome("A man, a plan, a canal: Panama")) print(A.isPalindrome("")) print(A.isPalindrome("qq")) print(A.isPalindrome("race a car"))