思路学习了算法笔记,代码自己写。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
const int mode = 1000000007;
int main()
{
char str[N];
int pos[N],index = 0,lnumP[N]={0},rnumT=0;
scanf("%s",str);
int len = strlen(str);
for(int i = 0;i<len;i++)
{
if(str[i] == 'P')
{
lnumP[i] = lnumP[i-1];
lnumP[i]++;
}
else
{
lnumP[i] = lnumP[i-1];
}
}
long long sum = 0;
for(int i = len - 1;i>=0;i--)
{
if(str[i] == 'T')
{
rnumT++;
}
if(str[i] == 'A')
sum =(sum + lnumP[i] * rnumT)%mode;
}
printf("%d",sum);
}