过生日
双指针是真没想出来,这场新生赛快打自闭了,基本全是数学
题目链接
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 110,INF=0x3f3f3f3f;
string s;
int k;
int num[100010];
int main()
{
int T;
cin>>T;
while(T--)
{
memset(num,0,sizeof num);
cin>>s;
cin>>k;
int res=INF;
int n=s.size();
s=" "+s;
for(int i=1,p=1;i<s.size();i++)
{
if(++num[s[i]]>=k)
{
while(num[s[i]]>=k)
{
num[s[p++]]--;
}
res=min(res,i-p+2);
}
}
if(res!=INF)cout<<res<<endl;
else cout<<-1<<endl;
}
}