无重复字符的最长子串

题目

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

示例1:

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

解题思路

滑动窗口+Map

 

 代码

package main

import "fmt"

func NoRepateChar(s string) int {
	mp := map[byte]int{}

	n := len(s)
	right := -1
	res := 0
	for i := 0; i < n; i++ {
		if i != 0 {
			delete(mp, s[i])
		}

		for right + 1 < n && mp[s[right+1]] ==0 {
			mp[s[right+1]]++
			right ++
		}


		res = Max(res, right -i +1)
	}

	return res
}

func Max(x, y int) int {
	if x > y {
		return x
	}
	return y
}

func main() {
	ss := "abcdabcdea"
	res := NoRepateChar(ss)
	fmt.Println(res)
}

  

posted @ 2020-11-27 16:33  small_lei_it  阅读(93)  评论(0编辑  收藏  举报