双指针
- 注意:数组初始化
- 特殊值
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
int cnt[3];
char s[200010];
int main()
{
scanf("%d", &n);
while (n -- ){
scanf("%s", s);
int n = strlen(s);
int ans = n + 1;
memset(cnt, 0, sizeof cnt);
for(int i = 0, j = 0; i < n; i++){
cnt[s[i] - '1'] ++;
while(cnt[s[j]-'1'] > 1){
cnt[s[j++] - '1'] --;
}
if(cnt[0] && cnt[1] && cnt[2]) ans = min(ans, i - j + 1);
}
if(ans == n + 1) ans = 0;
printf("%d\n", ans);
}
return 0;
}