暴力会超时。
思路: 每个字母A左边的P的个数 * 该字母A右边的T的个数 ,然后结果相加即可。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
const int mod = 1000000007;
int main(int argc, char** argv) {
int leftP[maxn] = {
0}, rightT = 0;
string str;
cin >> str;
int len = str.length();
for(int i = 0; i < len; i++){
if(i > 0){
leftP[i] = leftP[i-1];
}
if(str[i] == 'P'){
leftP[i]++;
}
}
int ans = 0;
for(int i = len-1; i >= 0; i--){
if(str[i] == 'T'){
rightT++;
}else if(str[i] == 'A'){
ans = (ans + rightT * leftP[i]) % mod;
}
}
cout << ans;
return 0;
}