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
}
相关推荐
每天要多喝水9 分钟前
动态规划Day30:买卖股票
算法·动态规划
v_for_van15 分钟前
力扣刷题记录6(无算法背景,纯C语言)
c语言·算法·leetcode
-To be number.wan18 分钟前
算法学习日记 | 双指针
c++·学习·算法
样例过了就是过了1 小时前
LeetCode热题100 最大子数组和
数据结构·算法·leetcode
铸人1 小时前
再论自然数全加和 - 欧拉伽马常数
数学·算法·数论·复数
踩坑记录1 小时前
leetcode hot100 200. 岛屿数量 medium dfs
leetcode·深度优先
m0_531237171 小时前
C语言-变量,枚举常量,字符串,打印类型,转义字符
c语言·数据结构·算法
zyeyeye2 小时前
自定义类型:结构体
c语言·开发语言·数据结构·c++·算法
俩娃妈教编程2 小时前
2023 年 03 月 二级真题(1)--画三角形
c++·算法·双层循环
niuniudengdeng2 小时前
一种基于高维物理张量与XRF实景复刻的一步闭式解工业级3D打印品生成模型
人工智能·python·数学·算法·3d