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
}
相关推荐
FPC工厂——皇榜科技9 分钟前
【皇榜科技线路板质量课堂·第40篇】PPAP(生产件批准程序):批量生产前的“终极面试”
科技·面试·职场和发展·制造·pcb工艺
玉树临风ives28 分钟前
atcoder ABC 472 题解
数据结构·c++·算法
AI服务老曹34 分钟前
抽烟识别算法接入 AI 视频分析平台的流程与误报优化指南
人工智能·算法·音视频
阳明山水37 分钟前
销量预测2025—2026:技术演进、实证发现与系统架构的系统性综述
人工智能·深度学习·算法·机器学习·架构
伯远医学40 分钟前
RIP-seq 高分文献案例分享
java·前端·javascript·人工智能·算法·eclipse·html
啊嘞嘞?1 小时前
力扣(LRU缓存)
算法·leetcode
珂朵莉MM1 小时前
2026国信杯具身智能创新大赛-编程技能赛--本科组国赛解题报告 | 珂学家
算法·深度优先·图论
啊嘞嘞?1 小时前
力扣(下一个排列)
算法·leetcode
疯狂打码的少年2 小时前
【数据结构】复习日:树 + 图 + 排序(整理对比表)
数据结构·笔记·算法
benchmark_cc2 小时前
Claude Code + MCP + QuantDash:打造全自动量化研究流水线的终极指南
人工智能·后端·爬虫·算法·claude·mcp·quantdash