0125. 验证回文串

0125. 验证回文串 #

  • 标签:字符串、双指针
  • 难度:简单

题目大意 #

给定一个字符串 s

要求:判断是否为回文串(只考虑字符串中的字母和数字字符,并且忽略字母的大小写)。

  • 回文串:正着读和反着读都一样的字符串。

解题思路 #

使用对撞指针求解。具体步骤如下:

  • 使用两个指针 leftrightleft 指向字符串开始位置,right 指向字符串结束位置。
  • 判断两个指针对应字符是否是字母或数字。 通过 left 右移、right 左移的方式过滤掉字母和数字以外的字符。
  • 然后判断 s[start] 是否和 s[end] 相等(注意大小写)。
    • 如果相等,则将 left 右移、right 左移,继续进行下一次过滤和判断。
    • 如果不相等,则说明不是回文串,直接返回 False
  • 如果遇到 left == right,跳出循环,则说明该字符串是回文串,返回 True

代码 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
class Solution:
    def isPalindrome(self, s: str) -> bool:
        left = 0
        right = len(s) - 1
        
        while left < right:
            if not s[left].isalnum():
                left += 1
                continue
            if not s[right].isalnum():
                right -= 1
                continue
            
            if s[left].lower() == s[right].lower():
                left += 1
                right -= 1
            else:
                return False
        return True
本站总访问量  次  |  您是本站第  位访问者