跳到主要内容

3. 无重复字符的最长子串

无重复字符的最长子串

3. 无重复字符的最长子串 - 力扣(LeetCode)

难度中等

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

/*
* @lc app=leetcode.cn id=3 lang=golang
*
* [3] 无重复字符的最长子串
*/

// @lc code=start
func lengthOfLongestSubstring(s string) int {
max, left, right := 0, 0, 0
for i := 0; i < len(s); i++ {
// left 会在遇到重复字符时跳到重复字符的下一个位置开始移动
// right 则会一直向后移动
// 从 left 到 right 之间的字符都是不重复的

for j := left; j < right; j++ {
if s[j] == s[i] {
left = j + 1

// 由于 left 会跳到重复字符的下一个位置开始移动
break
}
}

right++

if right-left > max {
max = right - left
}
}

return max
}