题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192
题目大意:这里关键在理解条件二和条件三,由条件二可以知道,字符串中只能有一个P 一个T,并且p t之间一定要有a;
由条件三,发现,aPbTc要符合条件二才成立,所以推出,p前面的a的个数*p t中间的a的个数=t后面a的个数
代码:
#include<iostream>
using namespace std;
#include<cstring>
#include<string>
#include<cctype>
#include<cmath>
#include<vector>
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
string a;
cin>>a;
int s=a.size();
int l,r;
int flag1=0,flag2=0;
for(int j=0;j!=s;++j)
{
if(a[j]!='P'&&a[j]!='A'&&a[j]!= 'T')
{
flag1=-1;
break;
}
if(a[j]=='P') //记录p的个数
{
l=j;
++flag1;
}
if(a[j]=='T'){ //记录t的个数
r=j;
++flag2;
}
}
if(flag1==1&&flag2==1&&(l*(r-l-1))==(s-r-1)&&(r-l-1)) cout<<"YES"<<endl;
//这里的判断条件,p t只能有一个,a的数量关系,并且pt之间必须有a
else cout<<"NO"<<endl;
}
return 0;
}