力扣刷题记录3

标明来源,题目及解题思路均来自:https://leetcode.cn/problems/longest-substring-without-repeating-characters/

题目:无重复字符的最长字串

给定一个字符串s,请你找出其中不含有重复字符的最长字串的长度。

python 复制代码
class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        dic, res, i = {}, 0, -1
        for j in range(len(s)):
            if s[j] in dic:
                i = max(dic[s[j]], i) # 更新左指针 i
            dic[s[j]] = j # 哈希表记录
            res = max(res, j - i) # 更新结果
        return res

这个题考的是滑动窗口,核心是用哈希表记录字符最新位置。

我还写了一个直白点的做法:

python 复制代码
class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        # 用集合存储当前窗口的字符
        window = set()
        left = 0  # 窗口左边界
        max_len = 0  # 记录最长长度
        
        for right in range(len(s)):
            # 如果当前字符已在窗口中,不断移动左边界直到移除重复字符
            while s[right] in window:
                window.remove(s[left])
                left += 1
            # 将当前字符加入窗口
            window.add(s[right])
            # 更新最长长度(当前窗口长度:right - left + 1)
            max_len = max(max_len, right - left + 1)
        
        return max_len

滑动窗口的知识点倒是没怎么为难我,所以我不写知识点。

好的,继续干下一篇。

相关推荐
可编程芯片开发16 分钟前
基于MPPT最大功率跟踪的离网光伏发电系统Simulink建模与仿真
算法
AI科技星25 分钟前
线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转、耦合、坍缩的跨空间标准化变换载体《全域数学vs传统数学:人类文明进阶200讲》第80讲
线性代数·算法·矩阵·数据挖掘·回归·乖乖数学·全域数学
米罗篮29 分钟前
矩阵快速幂 (Exponentiation By Squaring Applied To Matrices)
c++·线性代数·算法·矩阵
dream_home840733 分钟前
图像算法模型NPU适配与算法服务实战指南
人工智能·python·算法·npu 图像服务
大鱼>1 小时前
多宠物家庭智能管理平台:云端架构与多设备协同实战
python·算法·iot·宠物
To_OC2 小时前
LC 22 括号生成:刷完这道题,我终于搞懂回溯剪枝了
javascript·算法·leetcode
To_OC2 小时前
LC 39 组合总和:回溯入门必刷题,我踩过的两个坑都在这了
javascript·算法·leetcode
数字杂技师2 小时前
每条推荐都很准,为什么我还是越刷越无聊?
算法
兰令水2 小时前
hot100【acm版】【2026.7.14打卡-java版本】
java·数据结构·算法·leetcode·面试
cpp_25013 小时前
P10098 [ROIR 2023] 地铁建设 (Day 2)
数据结构·c++·算法·贪心·二分答案·洛谷题解