题意:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int inf = 0x3f3f3f3f;
const int N = 30;
const int M = 1e6 + 10;
int num[N],cnt;//每个字母出现的次数,不重复字母个数
char s[M];
void add(int x){
int ch = s[x] - 'a';
num[ch]++;
if(num[ch] == 1) cnt++;
}
void del(int x){
int ch = s[x] - 'a';
num[ch]--;
if(num[ch] == 0) cnt--;
}
int main(){
scanf("%s",s + 1);
int n = strlen(s + 1);
int ans = inf;
int l = 1,r = 0;
while(l <= n){
while(cnt < 26 && r < n) add(++r);
if(cnt == 26){
ans = min(ans,r - l + 1);
}
del(l++);
}
printf("%d\n",ans);
return 0;
} 
京公网安备 11010502036488号