#include <iostream>
#include <string>
#include <map>
using namespace std;
int main(){
int n, p = 0, t = 0;
int i = 0;
string ss[10],s;
cin >> n;
for(i = 0; i < n; i++)
cin >> ss[i];
for( i = 0; i < n; i++) {
s=ss[i];
map<char, int> m;//变量是字符型:m[s[j]]=9;中的s[j],,指向的量是整数型,其中的9
for(int j = 0; j < s.size(); j++) {
m[s[j]]++;//当有三个位置m['P']、m['A']、m['T']、才可能正确
if (s[j] == 'P') p = j;//标记最后一一个P和最后一个T的位置
if (s[j] == 'T') t = j;
}
if (m['P'] == 1 && m['A'] != 0 && m['T'] == 1 //至少一个'A',‘P’和‘T’的个数只能是1
&& m.size() == 3 //三个字母都有
&& t-p != 1 //T和P之间有A
&& p * (t-p-1) == s.length()-t-1)//前面的a个A和中间的b个A相乘等于后面的A的个数
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
pat 乙级 1003 我要通过! (20分)
最新推荐文章于 2024-11-09 13:08:09 发布