数据结构【字符串、双指针】| leetcode 125. 验证回文串(简单)

本文介绍了如何使用双指针和字符串处理技巧解决LeetCode第125题验证回文串的问题。通过将所有字符转为小写并移除非字母数字字符,然后用双指针从两端向中间比较字符,当指针相遇时即为回文串。
摘要由CSDN通过智能技术生成

代码链接:https://leetcode.cn/problems/valid-palindrome/solution/yan-zheng-hui-wen-chuan-by-leetcode-solution/

注意事项:

  • 所有大写字符转换为小写字符:lower() 方法转换字符串中所有大写字符为小写。
  • 移除所有非字母数字字符:isalnum() 方法检测字符串是否由字母和数字组成。

使用双指针。初始时,左右指针分别指向 s g o o d sgood sgood 的两侧,随后我们不断地将这两个指针相向移动,每次移动一步,并判断这两个指针指向的字符是否相同。当这两个指针相遇时,就说明 s g o o d sgood sgood 时回文串。

# class Solution:
#     def isPalindrome(self, s: str) -> bool:
#         s = ''.join(ch.lower() for ch in s if ch.isalnum())
#         n = len(s)
#         for i in range(n//2):
#             if s[i] != s[n-1-i]:
#                 return False
#         return True

class Solution:
    def isPalindrome(self, s: str) -> bool:
        sgood = "".join(ch.lower() for ch in s if ch.isalnum())
        n = len(sgood)
        left, right = 0, n - 1
        
        while left < right:
            if sgood[left] != sgood[right]:
                return False
            left, right = left + 1, right - 1
        return True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值