PAT 乙级 1040 有多少个PAT python

题目
在这里插入图片描述
思路
我的思路有超时
找到字符串中A的位置,统计A之前的P的个数,以及A之后的T的个数,将其相乘求和即可
超时代码

def count_str(list_,str_):
    count_=0
    for i in list_:
        if i==str_:
            count_=count_+1
    return count_

import sys
input=sys.stdin.readline()
num_pat=0
for i in range(len(input)):
    if input[i]=='A':
        P_num=count_str(input[0:i],'P')
        T_num = count_str(input[i+1 :], 'T')

        num_pat=num_pat+P_num*T_num

print(num_pat%1000000007)

博主的代码无超时,他好聪明,为啥我想不到
博主链接:无超时代码链接
无超时代码

n = input()
count_P = count_PA = count_PAT = 0
for i in n:
    if 'P' == i:
        count_P += 1
    elif 'A' == i:
        count_PA += count_P
    else:
        count_PAT += count_PA
print(count_PAT % 1000000007)

此代码来自上述博主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值