题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5056
3 abc 1 abcabc 1 abcabc 2
6 15 21
#include <cstdio> #include <cstring> const int maxn = 100017; int main() { int t; char str[maxn]; int st[27]; int k; scanf("%d",&t); while(t--) { memset(st,0,sizeof(st)); scanf("%s",str); scanf("%d",&k); __int64 ans = 0; int len = strlen(str); int startpos = 0; for(int i = 0; i < len; i++) { int tt = str[i] -'a'; st[tt]++; if(st[tt] > k) { while(str[startpos]!=str[i]) { st[str[startpos]-'a']--; startpos++; } st[str[startpos]-'a']--; startpos++; } ans+=i-startpos+1; } printf("%I64d\n",ans); } return 0; }
原文地址:http://blog.csdn.net/u012860063/article/details/39674597