1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// @Title: 无重复字符的最长子串 (Longest Substring Without Repeating Characters)
// @Author: 15816537946@163.com
// @Date: 2022-03-23 19:23:25
// @Runtime: 4 ms
// @Memory: 2.9 MB
func lengthOfLongestSubstring(s string) int {
	var lo, hi, ret int
	r := make(map[byte]int)

	for hi < len(s) {
		r[s[hi]]++
		for r[s[hi]] > 1 {
			r[s[lo]]--
			lo++
		}
		ret = max(ret, hi-lo+1)
		hi++
	}

	return ret
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}