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

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

维护一个区间:

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

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

遍历规则

right 向右扩展

如果 sright 没出现过,扩大窗口,更新最大长度

如果 sright 已经在窗口里,缩小 left(直到sright 不在窗口里)

直到重复字符被移出

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

空间复杂度: O(1)

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

相关推荐
weixin_440730502 分钟前
内置函数、json文本、pickle二进制
开发语言·python·json
计算机毕业编程指导师37 分钟前
Python大数据毕设:基于Hadoop的病毒式社交媒体趋势和参与度分析系统怎么做 源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·毕业设计·课程设计·社交媒体
计算机毕业编程指导师39 分钟前
【计算机毕设选题推荐】基于Spark与Hadoop的AI就业收入区域差异分析系统 源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·python·数据分析·spark·毕业设计·课程设计·ai就业收入
小猴子爱上树43 分钟前
跨马翻译:批量图片翻译与视频字幕、智能抠图一站式在线图片翻译工具
大数据·人工智能·python·音视频
lzqrzpt1 小时前
临沂LED驱动电源工程选型标准与工艺对比解析
python·单片机·嵌入式硬件·物联网
专业程序开发源1 小时前
django新闻推荐系统70655-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·django·课程设计
蒲公英eric1 小时前
人口增长问题:从 Malthus 到 Logistic 的建模之旅
人工智能·python·数学建模·人口增长问题
全栈练习生1 小时前
大模型原理之 Softmax
python·ai
迅猛龙办公室1 小时前
python获取星期字符串
开发语言·python