#include <iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
char s[11][110];
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s",s[i]);
}
for(int i=0;i<n;)
{
bool t=false;
int j=0,c=0;
int l=strlen(s[i]);
while(s[i][j]=='A')
{
j++;
c++;
}//去掉前面的A
if(s[i][j]!='P')
{
printf("NO\n");
i++;
continue;
}
else
{
j++;
int x=0;
if(s[i][j]!='A')
{
printf("NO\n");
i++;
continue;
}
while(s[i][j]=='A')
{
j++;
x++;
t=true;
}
if(s[i][j]=='T')
{
j++;
int p=0;
while(s[i][j]=='A')
{
j++;
p++;
}
if(j>=l&&t==true&&c*x==p)
{
printf("YES\n");
i++;
continue;
}
else
{
printf("NO\n");
i++;
continue;
}
}
else
{
printf("NO\n");
i++;
continue;
}
}
}
return 0;
}
这道题目刚开始没有读懂题目,结构有两个case无法通过,后来在网上看了大神的解析,才恍然大悟,P之前的A数目乘以P与T之间的A的数目等于P后面的A的数目。