125. 验证回文串

125. 验证回文串

  • 题号:力扣125
  • 知识点:双指针,字符串
  • 目标完成度:46/150
  • 总结
    题干:
    在这里插入图片描述

方法1-双指针:

  • 1.由于忽略字母的大小写,首先使用s = s.lower()把字符串统一成全部小写
  • 2.然后使用双指针,如果左指针和右指针都是指向的数字或字母,判断左右指针指向的字母或数字是否相同,如果相同,则left += 1, right -= 1, 继续向中间靠拢;如果不同则返回False,终止。
  • 3.如果左指针不是指向的数字或字母,则left += 1
  • 4.如果右指针不是指向的数字或字母,则right += 1
  • 5.最后如果left == right了,则说明所有的字符都被两个指针遍历了,并且没有发现左右指针不相等的,返回True,终止
  • 6.知识点:isalnum():如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = s.lower()
        left = 0
        right = len(s)-1
        while left < right:
            if not s[left].isalnum():
                left += 1
            if not s[right].isalnum():
                right -= 1
            if s[left].isalnum() and s[right].isalnum():
                if s[left] == s[right]:
                    left += 1
                    right -= 1
                else:
                    return False
        return True

方法2-筛选字母和数字:

  • 1.首先还是把所有字母统一成小写
  • 2.然后筛选出字符串中的字母和数字,放入新数组new_s
  • 3.如果是回文串,则该数组正序和逆序相等。反之亦然
class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = s.lower()
        new_s = []
        for x in s:
            if 'a'<= x <= 'z':
                new_s.append(x)
            if '0'<= x <= '9':
                new_s.append(x)
        return new_s == new_s[::-1]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值