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
}
相关推荐
亭上秋和景清几秒前
计算器回调函数
c语言·数据结构·算法
青山的青衫2 分钟前
【优先级队列(堆)+排序】LeetCode hot100+面试高频
算法·leetcode·面试
第二只羽毛7 分钟前
基于Deep Web爬虫的当当网图书信息采集
大数据·开发语言·前端·爬虫·算法
Ayanami_Reii7 分钟前
详解Splay平衡树
数据结构·算法·线段树·主席树·持久化线段树
前端小白在前进13 分钟前
★力扣刷题:LRU缓存
spring·leetcode·缓存
JiaJZhong22 分钟前
560. 和为 K 的子数组
数据结构·算法
小年糕是糕手24 分钟前
【C++】模板初阶
java·开发语言·javascript·数据结构·c++·算法·leetcode
AndrewHZ1 小时前
【遥感图像入门】遥感图像专用去噪算法:核心方案与实战(PyTorch代码)
pytorch·算法·计算机视觉·cv·遥感图像·高分辨率·去噪算法
前端小L2 小时前
回溯算法专题(八):精细化切割——还原合法的「IP 地址」
数据结构·算法
Hcoco_me8 小时前
大模型面试题17:PCA算法详解及入门实操
算法