思路:每一個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;
}