APT APT~
只用一次倒序遍历即可,ts记录'T'的个数,每出现一个'A'就能多ts个"AT"组合,每出现一个'P'就能多ats个'PAT'组合。
发一下只是因为很喜欢《APT》
#include<iostream>
using namespace std;
long long int MOD=1000000007;
int main(){
long long int ts=0,las=0,ans=0,ats=0;
//ats为可以形成AT的个数,每个P能形成ats个PAT
string l;
cin>>l;
for(auto i=l.rbegin();i!=l.rend();i++){
if (*i=='T')ts++;
if (*i=='A')ats+=ts;
if (*i=='P'){
ans=(ans+ats)%MOD;
}
}
cout<<ans;
return 0;
}