因为没有初始化ans搞了一晚上
还是尺取,枚举所有l 然后寻找对应满足条件的r,这个串可以被后面所有的串包含,所以每个l 的贡献就是len-r+1
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
int t,k,len,r,sum;
ll ans=;
char s[];
int vis[];
scanf("%d",&t);
while(t--){
memset(vis,,sizeof vis);
scanf("%s%d",s,&k);
len=strlen(s);
sum=r=;
for(int l=;l<len;l++){
if(l) {
int tmp=s[l-];
vis[tmp]--;
if(vis[tmp]==) sum--;
} while(){
if(sum==k || r==len) break;
int tmp=s[r];
vis[tmp]++;
if(vis[tmp]==) sum++;
r++;
}
if(sum==k) ans+=len-r+;
else break;
}
printf("%lld\n",ans);
}
}