力扣刷题记录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

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

好的,继续干下一篇。

相关推荐
晚霞的不甘5 分钟前
Flutter for OpenHarmony 实现计算几何:Graham Scan 凸包算法的可视化演示
人工智能·算法·flutter·架构·开源·音视频
㓗冽19 分钟前
60题之内难题分析
开发语言·c++·算法
大江东去浪淘尽千古风流人物21 分钟前
【VLN】VLN仿真与训练三要素 Dataset,Simulators,Benchmarks(2)
深度学习·算法·机器人·概率论·slam
铉铉这波能秀1 小时前
LeetCode Hot100数据结构背景知识之字典(Dictionary)Python2026新版
数据结构·python·算法·leetcode·字典·dictionary
蜡笔小马1 小时前
10.Boost.Geometry R-tree 空间索引详解
开发语言·c++·算法·r-tree
我是咸鱼不闲呀1 小时前
力扣Hot100系列20(Java)——[动态规划]总结(下)( 单词拆分,最大递增子序列,乘积最大子数组 ,分割等和子集,最长有效括号)
java·leetcode·动态规划
唐梓航-求职中1 小时前
编程-技术-算法-leetcode-288. 单词的唯一缩写
算法·leetcode·c#
仟濹1 小时前
【算法打卡day3 | 2026-02-08 周日 | 算法: BFS】3_卡码网99_计数孤岛_BFS | 4_卡码网100_最大岛屿的面积DFS
算法·深度优先·宽度优先
Ll13045252981 小时前
Leetcode二叉树part4
算法·leetcode·职场和发展
颜酱1 小时前
二叉树遍历思维实战
javascript·后端·算法