Ternary String(包含1,2,3最短串长度)

Ternary String(包含1,2,3最短串长度)_第1张图片
题意:给你一个字符串求出包含1,2,3最短的子串长度
思路:求出1,2,3字符的每个位置,当三个字符都在的时候,求子串的长度。如果有更小的则更新答案

#include
using namespace std;
int main()
{
	int t;cin>>t;
	while(t--)
	{
		string s;cin>>s;
		int a=-1,b=-1,c=-1;
		int sum=0x3f3f3f3f,ans=0x3f3f3f3f;
		for(int i=0;i<s.length();i++)
		{
			if(s[i]=='1')a=i;
			else if(s[i]=='2')b=i;
			else c=i;
			if(a!=-1&&b!=-1&&c!=-1)
			{
				sum=i+1-min(min(a,b),c);
				ans=min(ans,sum);
			}
		}
		if(sum==0x3f3f3f3f)cout<<0<<endl;
		else cout<<ans<<endl;
	}
}

你可能感兴趣的:(Codeforces)