放的这个链接已经很清楚的说明了这道题的思路,下面我放出我自己的具体实现代码,解题思路完全是一样的。仅供参考:
#include<bits/stdc++.h>
#include<string>
using namespace std;
int main()
{
int n;
cin >> n;//n是输入字符串的个数;
string s;
while(n--){
int p=0,t=0,lp,lt,num=0,flag =0;//p,t分别记录字符串中P,T个数,lp,lt分别记录位置,num是其他字符的数量,flag来表明是否符合条件;
cin >> s;
for(int i=0;i<s.length();++i){
if(s[i]=='P'){
p++;
lp = i;
}
else if(s[i]=='T')
{
t++;
lt=i;
}
else if(s[i]!='A')
{
num++;
}
}
int a = lp;
int b = lt-lp-1;
int c = s.length()-lt-1;
if((p!=1)||(t!=1)||(lt-lp<=1)||(num!=0)){ //p,t的数量必须为1,P,T之间最少得有一个A,其他字符个数必须为0;
flag=0;
}
else if(a*b == c){
flag=1;
}
else
flag=0;
if(flag == 1)
cout << "YES" << endl;
if(flag == 0)
cout << "NO" << endl;
}
return 0;
}