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
}
相关推荐
.柒宇.5 小时前
力扣hot100----15.三数之和(java版)
java·数据结构·算法·leetcode
杰克尼6 小时前
二分查找为什么总是写错
java·数据结构·算法
雪域迷影6 小时前
Go语言中通过get请求获取api.open-meteo.com网站的天气数据
开发语言·后端·http·golang·get
程序员阿鹏9 小时前
56.合并区间
java·数据结构·算法·leetcode
数据知道9 小时前
Go语言设计模式:适配器模式详解
设计模式·golang·建造者模式
古译汉书10 小时前
Stm32江科大入门教程--各章节详细笔记---查阅传送门
数据结构·stm32·单片机·嵌入式硬件·算法
Jasmine_llq12 小时前
《P2656 采蘑菇》
算法·强连通分量·广度优先搜索(bfs)·tarjan 算法·图的缩点操作·有向无环图(dag)·最长路径
芥子沫12 小时前
《人工智能基础》[算法篇3]:决策树
人工智能·算法·决策树
mit6.82412 小时前
dfs|位运算
算法