思路:每一个A能组合成PAT的个数等于这个A前面的P的个数乘以这个A后面的T的个数
下面贴代码:
注释都写上来了,大家可以参考参考。
#include<iostream>
using namespace std;
int main(){
char ch[100000];
long sum=0,p=0,t=0;
scanf("%s",ch);
for(int i=0;ch[i]!='\0';i++){ //求字符串中'T'的个数
if(ch[i]=='T')
t++;
}
for(int i=0;ch[i]!='\0';i++){
if(ch[i]=='P') //'A'前面的'P'
p++;
if(ch[i]=='T') //'A'后面的'T'
t--;
if(ch[i]=='A'){
sum=(sum+p*t)%1000000007;
}
}
cout<<sum;
return 0;
}