总结字符串要求:只能有一个P一个T,中间末尾和开头可以随便插入A。但是必须满足开头的A的个数 * 中间的A的个数 = 结尾的A的个数
#include <iostream>
#include<cstdio>
#include<string>
#include <map>
using namespace std;
int main() {
int n, p = 0, t = 0;
string s;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> s;
map<char, int> m;
for(int j = 0; j < s.size(); j++) {
m[s[j]]++;
if (s[j] == 'P') p = j;
if (s[j] == 'T') t = j;
}
if(m['P'] == 1 && m['A'] != 0 && m['T'] == 1 && m.size() == 3 && p * (t-p-1) == s.length()-t-1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
使用map极大的简化了本题的代码量