20241108,LeetCode 每日一题,用 Go 计算字符串中最长无重复字符

题目

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:

输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。

请注意,你的答案必须是 子串 的长度,"pwke" 是一个*子序列,*不是子串。

思路

使用滑动窗口算法,遍历字符串。

代码

go 复制代码
func lengthOfLongestSubstring(s string) int {
	charMap := make(map[rune]int)
	start, maxlen := 0, 0
	for i, char := range s {
		if idx, ok := charMap[char]; ok && idx >= start {
			start = idx + 1
		}
		charMap[char] = i
		maxlen = max(maxlen, i-start+1)
	}
	return maxlen
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}
相关推荐
ulias2124 分钟前
深挖进程间通信的奥秘
java·linux·服务器·开发语言·c++·算法
8Qi85 分钟前
LeetCode 62 & 63:不同路径 I & II(含障碍物)
java·算法·leetcode·职场和发展·动态规划
城事漫游Molly8 分钟前
AI赋能质性研究(八): 断言与命题写作,实现从数据到理论跨越的5个高质量 Prompt
人工智能·算法·prompt·ai for science·定性研究
森林古猿18 分钟前
论CDQ分治
c++·学习·算法·排序算法
luj_176811 分钟前
局部两极分析破解数学建模难题
服务器·c语言·开发语言·经验分享·算法
CQU_JIAKE17 分钟前
6.4aaaa
算法
sheeta19981 小时前
LeetCode 每日一题笔记 日期:2026.06.02 题目:3633. 最早完成陆地和水上游乐设施的时间 I
笔记·算法·leetcode
王哈哈^_^1 小时前
【源码教程+数据集】农作物分类检测数据集 10712 张,农作物分类检测系统实战教程
人工智能·算法·yolo·目标检测·计算机视觉·毕业设计·数据集
bIo7lyA8v2 小时前
算法优化中的多线程数据一致性问题的技术8
算法