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
}
相关推荐
Mr -老鬼9 分钟前
Go存储架构选型实战:单库、双库还是多库?——基于核心元数据+动态表场景的技术解析
大数据·架构·golang
2401_8319207411 分钟前
C++中的桥接模式
开发语言·c++·算法
m0_7434703713 分钟前
C++中的桥接模式变体
开发语言·c++·算法
gulinigar18 分钟前
C++中的观察者模式实战
开发语言·c++·算法
星空露珠19 分钟前
迷你世界UGC3.0脚本Wiki对象模块管理接口 GameObject
开发语言·数据库·算法·游戏·lua
困死,根本不会20 分钟前
蓝桥杯 Python 备考全攻略:从入门到进阶的学习路线
笔记·python·学习·算法·蓝桥杯
油泼辣子多加25 分钟前
【ML】SVM算法原理
人工智能·算法·机器学习·支持向量机·数据挖掘
Irissgwe31 分钟前
二叉树进阶,map和set
数据结构·算法
ithadoop42 分钟前
go面试知识点分类整理
golang·go
郝学胜-神的一滴1 小时前
深度学习入门基石:PyTorch张量核心技术全解析
人工智能·pytorch·python·深度学习·算法·机器学习