给你一个由小写字母组成的长度为n的字符串 S ,找出所有长度为 k 且包含重复字符的子串,请你返回全部满足要求的子串的数目。
数据范围:
,
进阶: 时间复杂度
,空间复杂度)
package main
import _"fmt"
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @param k int整型
* @return int整型
*/
func numKLenSubstrRepeats( s string , k int ) int {
cnt:=map[byte]int{}
ans:=0
for i,ch:=range []byte(s){
if i==k{
break
}
cnt[ch]++
}
if len(cnt)<k{
ans++
}
for l,r:=0,k;r<len(s);l,r=l+1,r+1{
var key byte
key=byte(s[l])
if cnt[key]==1{
delete(cnt,key)
}else{
cnt[key]--
}
key=byte(s[r])
cnt[key]++
if len(cnt)<k{
ans++
}
}
return ans
}