LeetCode讲解篇之3. 无重复字符的最长子串

文章目录

题目描述

题解思路

因为我们需要求无重复字符的最长子串,这个我们首先需要想到使用滑动窗口,窗口内记录无重复的子串的所有字符,移动窗口的右边界时,发现当前字符在窗口内已经出现,则将窗口中和当前元素相同的元素和其前面的元素淘汰,保证窗口内的字符都是不重复的,我们只需要滑动过程中窗口的最大长度即可

代码实现

go 复制代码
func lengthOfLongestSubstring(s string) int {
	// 最终结果
    ans := 0
    // 窗口
    win := map[byte]int{}
    // 窗口的左边界下标
	left := -1

	for i := 0; i < len(s); i++ {
		c := s[i]
		// 如果当前字符在窗口中存在,并且下标合法
		if idx, ok := win[c]; ok && idx > left {
			// 设置窗口的左边界,相当于淘汰窗口中和当前元素相同的元素和其前面的元素
			left = idx
		}

		// 设置当前字符的下标
		win[c] = i
		// 刷新结果的最大值
		ans = max(ans, i - left)
	}

    return ans
}
相关推荐
狐5729 分钟前
2026-01-22-LeetCode刷题笔记-3507-移除最小数对使数组有序I
笔记·leetcode
充值修改昵称29 分钟前
数据结构基础:B树磁盘IO优化的数据结构艺术
数据结构·b树·python·算法
程序员-King.7 小时前
day158—回溯—全排列(LeetCode-46)
算法·leetcode·深度优先·回溯·递归
月挽清风8 小时前
代码随想录第七天:
数据结构·c++·算法
小O的算法实验室8 小时前
2026年AEI SCI1区TOP,基于改进 IRRT*-D* 算法的森林火灾救援场景下直升机轨迹规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
小郭团队8 小时前
2_1_七段式SVPWM (经典算法)算法理论与 MATLAB 实现详解
嵌入式硬件·算法·硬件架构·arm·dsp开发
充值修改昵称9 小时前
数据结构基础:从二叉树到多叉树数据结构进阶
数据结构·python·算法
Deepoch9 小时前
Deepoc数学大模型:发动机行业的算法引擎
人工智能·算法·机器人·发动机·deepoc·发动机行业
浅念-9 小时前
C语言小知识——指针(3)
c语言·开发语言·c++·经验分享·笔记·学习·算法
Hcoco_me10 小时前
大模型面试题84:是否了解 OpenAI 提出的Clip,它和SigLip有什么区别?为什么SigLip效果更好?
人工智能·算法·机器学习·chatgpt·机器人