CF701C
题意:
题解:
代码
#include <bits/stdc++.h>
using namespace std;
int const N = 100000 + 10;
int const M = 60;
int n,vis[M];
char s[N];
int main(){
scanf("%d",&n);
scanf(" %s",s);
int len = strlen(s);
int type = 0;
for(int i=0;i<len;i++)
if(++vis[s[i]-'A'] == 1) type++;
memset(vis,0,sizeof(vis));
int cnt = 0,ans = N,st = 0;
for(int i=0;i<len;i++){
if(++vis[s[i]-'A'] == 1) cnt++;
while(cnt == type && st <= i){
ans = min(ans,i - st + 1);
if(--vis[s[st]-'A'] == 0) cnt--;
st++;
}
}
cout<<ans<<endl;
return 0;
}