判断回文串——相向双指针

415. 有效回文串

中文
English

给定一个字符串,判断其是否为一个回文串。只考虑字母和数字,忽略大小写。

样例

样例 1:

输入: "A man, a plan, a canal: Panama"
输出: true
解释: "amanaplanacanalpanama"

样例 2:

输入: "race a car"
输出: false
解释: "raceacar"

挑战

O(n) 时间复杂度,且不占用额外空间。

注意事项

你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。

在这个题目中,我们将空字符串判定为有效回文。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution:
    """
    @param s: A string
    @return: Whether the string is a valid palindrome
    """
    def isPalindrome(self, s):
        # write your code here
        l, r = 0, len(s)-1
         
        def is_valid_char(c):
            return 'a' <= c <= 'z' or 'A' <= c <= 'Z' \
                    or '0' <= c <= '9'
                     
        while l <= r:
            while l <= r and not is_valid_char(s[l]):
                l += 1
                 
            while l <= r and not is_valid_char(s[r]):
                r -= 1
             
            if l <= r:
                if s[l].lower() != s[r].lower():
                    return False
                l += 1
                r -= 1
         
        return True

 

 

posted @   bonelee  阅读(170)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2019-01-11 需要排序的最短子数组的长度——是一个排序好的数组,中间某一部分被打乱了,让你找出打乱的那个子数组
2018-01-11 利用Powershell和ceye.io实现Windows账户密码回传
2018-01-11 Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力
2018-01-11 python 读取二进制文件 转为16进制输出
点击右上角即可分享
微信分享提示