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 小时前
LeetCode热题100——234.回文链表(两种解法)
c++·算法·leetcode·链表
IronMurphy9 小时前
【算法四十二】118. 杨辉三角 198. 打家劫舍
算法
电科一班林耿超9 小时前
第 16 课:动态规划专题(二)—— 子序列与子数组问题:面试最高频的 DP 题型
数据结构·算法·动态规划
生信研究猿10 小时前
leetcode 416. 分割等和子集
算法·leetcode·职场和发展
狗哥哥10 小时前
面包屑自动推导的算法设计:从“最短路径匹配”到工程可落地
算法·架构
6Hzlia11 小时前
【Hot 100 刷题计划】 LeetCode 24. 两两交换链表中的节点 | C++ 精准指针舞步
c++·leetcode·链表
隔壁大炮11 小时前
Day07-RNN介绍
人工智能·pytorch·rnn·深度学习·神经网络·算法·numpy
WL_Aurora11 小时前
Python 算法基础篇之什么是算法
python·算法
墨染天姬11 小时前
[AI]DeepSeek-R1的GRPO算法
人工智能·算法·php