leetcode hot100 3.无重复字符的最长子串 medium 滑动窗口(双指针)

核心思想:滑动窗口(双指针)

维护一个区间:

python 复制代码
[left ...... right]

这个区间 始终保证:没有重复字符

遍历规则

right 向右扩展

如果 s[right] 没出现过,扩大窗口,更新最大长度

如果 s[right] 已经在窗口里,缩小 left(直到s[right] 不在窗口里)

直到重复字符被移出

python 复制代码
class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        if not s:
            return 0

        left = 0
        max_len = 0

        for right in range(len(s)):
            # 检查是否有重复
            while s[right] in s[left:right]:   # 有重复的就右移左指针,直到没有重复的
                left += 1

            max_len = max(max_len, right - left + 1)

        return max_len

时间复杂度 O(n)

in 操作的成本:

while s[right] in s[left:right] 的操作虽然看起来是 O(n) 的操作(因为它在 left:right 的子串上查找),但由于每个字符的 left 和 right 只移动一次,in 操作的时间成本不会累积成 O(n²)。它们是分散的,所以总的时间复杂度是 O(n)。

空间复杂度: O(1)

除了输入字符串 s 外,程序只使用了两个额外的变量:left 和 max_len,它们都占用常量空间。

相关推荐
程序员杰哥5 小时前
Chrome浏览器+Postman做接口测试
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
ZCXZ12385296a5 小时前
YOLO11-ASF-P2模型实现蚕桑业健康状态识别完整教程
python
gang_unerry5 小时前
量子退火与机器学习(4): 大模型 1-bit 量子化中的 QEP 与 QQA 准量子退火技术
人工智能·python·机器学习·量子计算
青瓷程序设计5 小时前
【交通标志识别系统】python+深度学习+算法模型+Resnet算法+人工智能+2026计算机毕设项目
人工智能·python·深度学习
啥都想学点6 小时前
关于制作技术视频讲解的问卷调查
python
喵手6 小时前
Python爬虫实战:博物馆官网的“展览预告/正在热展”栏目,抓取展览名称、精确展期、具体展厅位置以及票务/预约规则(附CSV导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·博物馆信息采集·采集展览预告/正在热展等·采集数据csv导出
喵手6 小时前
Python爬虫实战:电商实体消歧完整实战 - 从混乱店铺名到标准化知识库的工程化实现,一文带你搞定!
爬虫·python·算法·爬虫实战·零基础python爬虫教学·同名实体消除·从混乱店铺名到标准化知识库
aluluka6 小时前
Emacs折腾日记(三十六)——打造个人笔记系统
笔记·python·emacs
鱼跃鹰飞6 小时前
Leetcode:97.交错字符串
linux·服务器·leetcode
黎子越6 小时前
python相关练习
java·前端·python