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

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

好的,继续干下一篇。

相关推荐
牧瀬クリスだ2 小时前
Redis Hash实战:高效存储对象与购物车
java·数据库·redis·算法·哈希算法
文丑颜不良啊2 小时前
LeetCode1141~1160题目解析
java·leetcode
木井巳2 小时前
【动态规划: 路径问题】下降路径最小和
java·算法·leetcode·动态规划·推荐算法
deepseek233 小时前
OpenAI三项科学发现拆解:3-SAT亚指数算法挑战ETH,AI科学声明的验证流水线怎么搭
人工智能·算法·openai
梦帮科技3 小时前
基于幺正李代数连续归一化流的混合量子生成模型 (HQNN-Flow) 完整技术指南(上部分)
网络·人工智能·算法·量子计算
青少儿编程课堂3 小时前
蓝桥杯青少组 + 全国青少年信息素养大赛 + 电子学会图形化考级|校园推箱子大挑战解析
c++·python·算法·bfs·信息学竞赛
ynchyong3 小时前
培养程序化思维
leetcode·程序化思维·刷题经验
荆棘鸟智能4 小时前
河道采砂船识别与轨迹追踪怎么做?检测、跟踪与电子围栏实战思路
人工智能·算法·目标检测
DFT计算杂谈5 小时前
GSAS-II X 射线衍射(XRD)数据转换为对分布函数(PDF,Pair Distribution Function)
算法·机器学习·pdf