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

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

好的,继续干下一篇。

相关推荐
用户938515635072 小时前
从 O(n²) 到 O(nlogn):一文读懂快速排序的“快”与“妙”
javascript·算法
To_OC3 小时前
手写快排次次翻车?别死背快排模板了,这才是面试官想听的底层逻辑
javascript·算法·排序算法
饼干哥哥4 小时前
Reddit VOC调研太慢?搭一个AI专家团队半小时洞察任何品类|以猫用饮水机为例
人工智能·算法·ai编程
地平线开发者5 小时前
Transformer模型部署之性能优化指南
算法
地平线开发者5 小时前
人在途中:从“编译失败”到“模型可落地”——CUDA 自定义算子
算法·自动驾驶
半个落月8 小时前
从递归到快速排序:用 JavaScript 把分治思想讲明白
javascript·算法·面试
小月土星9 小时前
JavaScript 快速排序:从 pivot、双指针到分治思想
javascript·算法·面试
小月土星9 小时前
JavaScript 递归入门:从 1 到 n 求和,再到数组扁平化
javascript·算法·面试
To_OC1 天前
LC 1 两数之和:面试第一道必考题,暴力解法直接被面试官 pass
javascript·算法·leetcode