题意:
#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; }