找Bug

https://leetcode-cn.com/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

 

示例 1:

输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

 

提示:

  • s.length <= 40000

注意:本题与主站 3 题相同:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

 

 

 

func lengthOfLongestSubstring(s string) int {
	n := len(s)
	c := 0
	m := map[byte]struct{}{}
	max := 0
	for i := 0; i < n; i++ {
		v := s[i]
		_, e := m[v]
		if e {
			m = map[byte]struct{}{}
			c = 0
		} else {
			c++
			if c > max {
				max = c
			}
		}
		m[v] = struct{}{}
	}
	return max
}

  

 

posted @ 2022-04-19 00:12  papering  阅读(46)  评论(0编辑  收藏  举报