AcWing 3624. 三值字符串【双指针,滑动窗口,最短代码】
原题链接
简单
作者:
繁花似锦
,
2021-06-03 21:13:17
,
所有人可见
,
阅读 340
双指针,滑动窗口
#include <iostream>
#include <cstring>
int cnt[100]; // 小范围,数组当哈希表来用
using namespace std;
int main()
{
int t;
cin >> t;
while(t--)
{
int res = 0x3f3f3f3f;
string s;
cin >> s;
memset(cnt,0,sizeof cnt); // 记得清空
for(int i = 0,j = 0;i < s.size();i ++ )
{
cnt[s[i]] ++;
while(cnt['1'] && cnt['2'] && cnt['3']){ // 双指针,滑动窗口,满足条件
res = min(res, i - j + 1);
cnt[s[j]] --;
j ++ ;
}
}
cout << (res == 0x3f3f3f3f ? 0 : res) << endl;
}
}