题解 | 包含不超过两种字符的最长子串

包含不超过两种字符的最长子串

https://www.nowcoder.com/practice/90d6a362fa7d4c519d557da797bb02ce

package main

import (
	"fmt"
)

func main() {
	var s string
	fmt.Scan(&s)
    fmt.Println(test3(s))
}

func test3(s string) int {
	var hash = make(map[byte]int)
	var ans int
	var left, right = 0, 0
	for right = range s {

		for len(hash) > 2 {
			hash[s[left]]--
			if hash[s[left]] <= 0 {
				delete(hash, s[left])
			}
			left++
		}
		hash[s[right]]++
		if len(hash) <= 2 {
			ans = max(ans, right-left+1)
		}
	}
	return ans
}

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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务