LeetCode 340. 至多包含 K 个不同字符的最长子串(滑动窗口)
最多包含k个字符类型的子串
注意的是,k标识字符类型,不是次数
func findStr(s string,k int)int{ mxAns:=0 sLen:=len(s) if sLen<=k{ return sLen } mp :=make(map[byte]int) le:=0;ri:=0 //左右指针维护一个窗口,mp记录窗口内每个元素出现次数,len(mp)标识窗口内元素种类个数 for ri=0;ri<sLen;ri++{ mp[s[ri]]++ for len(mp)>k { //窗口内key个数大于k的时候,就要考虑移动左指针 mp[s[le]]-- //这里不能移到下面去,否则会出现负数 if mp[s[le]]==0{//如果左指针元素只出现一次,淘汰这个元素,并且更新窗口大小 delete(mp,s[le]) } le++ } mxAns=getMax(mxAns,ri-le+1) } return mxAns }
等风起的那一天,我已准备好一切