第一遍即兴做题的代码
s = input()
Aindex = s.index('A')
sdeal = [i for i in s] # 当成列表处理
countP = 0;
countT = 0
sum = 0
flag1 = 1 # 为1说明还有A,用来找PAT
while flag1 == 1:
# 初始化
# print(sdeal,Aindex)
countP = 0;
countT = 0
for i in range(0, Aindex):
if sdeal[i] == 'P':
countP += 1
for i in range(Aindex + 1, len(sdeal)):
if sdeal[i] == 'T':
countT += 1
sum += countP * countT
try:
del sdeal[Aindex] # 删除用过的A
Aindex = sdeal.index('A')
except:
flag1 = 0
print(sum % 1000000007)
提交后优化的代码
s = input()
sdeal = [i for i in s] # 当成列表处理
Aindex = []
for i in range(len(sdeal)):
if sdeal[i] == 'A':
Aindex.append(i)
sum=0
for index in Aindex:
countP = countT = 0
for i in range(0, index):
if sdeal[i]=='P':
countP+=1
for i in range(index+1,len(sdeal)):
if sdeal[i] == 'T':
countT +=1
sum +=countP*countT
print(sum % 1000000007)
别人的不超时代码(真*直接遍历就行,别想复杂)
#关键:按序遍历,不重复使用
s = input()
count_P = count_PA = count_PAT = 0
for i in s:
if i == 'P':
count_P += 1
elif i == 'A' :
count_PA += count_P
elif i == 'T':
count_PAT += count_PA
print(count_PAT % 1000000007)