第一种思路求出每个A左右两遍P,T的个数,然后相乘求和。
第二种,遍历一遍字符串,每次出现一次A就累加前面P,每次出现一次T再累加前面A,最后T就是答案,只要其中一个没出现最后T肯定是0,T的值由前面A决定,A由P决定。
#include <iostream>
using namespace std;
long long P,A,T,mod = 1e9 + 7;
int main()
{
string s;
cin >> s;
for(auto c : s)
{
if(c == 'P') P ++;
if(c == 'A') A += P;
if(c == 'T') T += A;
}
cout << T % mod << '\n';
return 0;
}