计算每一个A 前面P的个数 * 后面T的个数。
#include <bits/stdc++.h>
using namespace std;
struct node {
int p, t;
};
unordered_map<int, node> mp;
int main() {
int cntp = 0, cntt = 0, ans = 0;
string s;
cin >> s;
for (int i = 0; i < s.size(); i++) {
if (s[i] == 'P') cntp++;
if (s[i] == 'A') mp[i].p = cntp;
}
for (int i = s.size() - 1; i >= 0; i--) {
if (s[i] == 'T') cntt++;
if (s[i] == 'A') mp[i].t = cntt;
}
for (auto it : mp) {
ans += it.second.p * it.second.t;
ans = ans % 1000000007;
}
printf ("%d", ans);
}