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
}
相关推荐
澈2073 分钟前
图论基础:邻接矩阵与邻接表详解
算法·图论·邻接矩阵
白日做梦Q8 分钟前
Miniconda 新手保姆级教程:从安装到熟练使用(全程无跳步,避坑指南附全)
人工智能·深度学习·算法·机器学习
吃好睡好便好9 分钟前
在Matlab中绘制变半径柱面图
开发语言·人工智能·学习·算法·matlab
拂拉氏12 分钟前
【知识讲解-题目讲解】:二叉树的前、中、后序遍历的三种实现(递归,非递归,Morris遍历)与二叉树oj题讲解(二叉树最近公共祖先,二叉树展开为链表)
数据结构·算法·leetcode·二叉树·遍历
luck_bor13 分钟前
File 类核心笔记
java·前端·算法
geovindu23 分钟前
go: Monitor Pattern
开发语言·后端·设计模式·golang·监控模式
anew___26 分钟前
从高方差到稳定训练:深度强化学习算法演进全解析
算法
郭龙_Jack36 分钟前
Java的虚拟线程 VS Go语言的goroutine
java·golang
大大杰哥37 分钟前
2026陕西省ICPC省赛补题(前六题)
c++·算法
Brilliantwxx38 分钟前
【C++】 继承与多态(上)
开发语言·c++·笔记·算法