给定一个字符串
s,请你找出其中不含有重复字符的最长子串的长度。
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
第一种解法
- 求长度
func lengthOfLongestSubstring(s string) int {
charSet := make(map[byte]bool)
maxLength, left, right := 0, 0, 0
for right < len(s) {
if !charSet[s[right]] {
charSet[s[right]] = true
right++
if right-left > maxLength {
maxLength = right - left
}
} else {
delete(charSet, s[left])
left++
}
}
return maxLength
}
- 求子串的组成
func lengthOfLongestSubstring(s string) string {
charSet := make(map[byte]bool)
var maxLen, left, right, index int
for right < len(s) {
if !charSet[s[right]] {
charSet[s[right]] = true
right++
if right-left > maxLen {
index = left
maxLen = right - left
}
} else {
delete(charSet, s[left])
left++
}
}
return s[index:index+maxLen]
}