解法
这道题的思路是:对于每一个A,数出前面P的数目cp和后面T的数目ct,算出 cp x ct,然后求和。注意,数字可能很大,所以计算cp x ct时就要取余,累加之后也要取余。
计算cp和ct时,可以先循环一遍算出t的总和,然后再循环一次,遇到p直接加1,遇到t减一(因为后面的t数目肯定减少一个了),遇到a就计算cp*ct,并且一直叠加。
n = input()
cp = 0
ct = 0
size = len(n)
ans = 0
for i in range(size):
if n[i] == 'T':
ct += 1
for i in range(size):
if n[i] == 'P':
cp += 1
elif n[i] == 'T':
ct -= 1
else:
ans = (ans + (cp * ct) % 1000000007) % 1000000007
print(ans)