题目描述
blablabla
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while(t --)
{
string s;
cin >> s;
int res = 10e6;
int j = 1,k = 0;
// 三个指针,两个指针记录,一个指针往后走
// i记录最新的一个和前面不同的数字位置,j记录i之前的数值,k记录j数值前最近一个不同的数值的位置
for(int i = 1;i < s.size();i ++)
{
if(s[i]==s[i-1])continue;
// 如果出现字符变化,则在这一位置进行判断,ijk位置所记录的数值,如果都不一样则说明找到一个子串
if(s[i] != s[j] && s[i] != s[k] && s[j] != s[k])res = min(res, i - k + 1);
// 更新指针位置,(i-1)为与i位置数值不同的最近一个数字的位置,更新k
// i为第二个数值的记录位置,更新j
// 之后i继续往后找
k = i - 1;
j = i;
}
if(res == 10e6)cout << 0 << endl;
else cout << res << endl;
}
return 0;
}