分析:计算A前面P的个数,A后面T的个数,相乘累加即可。
#include <iostream>
#include<cstring>
#include<vector>
#include<stdio.h>
#include<queue>
#include<math.h>
#include<stack>
#include<algorithm>
#include<map>
#include<set>
#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
#define MAX 999999999
typedef long long ll;
int n,m,k;
int leftp[100001];
int rightt[100001];
int main()
{
string s;cin>>s;
int len = s.size();
int cnt = 0;
for(int i = 0 ; i < len; i++)
{
if(s[i] == 'P')
cnt++;
leftp[i] = cnt;
}
cnt = 0;
for(int i = len - 1;i >= 0; i--)
{
if(s[i] == 'T')
cnt++;
rightt[i] = cnt;
}
cnt = 0;
for(int i = 0; i < len ;i++)
{
if(s[i] == 'A')
cnt = (cnt + leftp[i] * rightt[i] ) % 1000000007;
}
cout<<cnt;
return 0;
}