PTA 1043 输出PATest

给定一个长度不超过 10​4​​ 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest… 这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。

输入格式:
输入在一行中给出一个长度不超过 10
​4
​​ 的、仅由英文字母构成的非空字符串。

输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。

输入样例:
redlesPayBestPATTopTeePHPereatitAPPT
输出样例:
PATestPATestPTetPTePePee


脑子不好使。。只会笨方法,啥算法都不懂,莫怪莫怪= =。写一行后,代码基本靠复制粘贴第一行再稍作修改即可,感觉我好懒,哈

s = input()
# 分别统计给出的字符串里含多少个P,A,T,e,s,t
P = s.count('P')
A = s.count('A')
T = s.count('T')
e = s.count('e')
_s = s.count('s')
t = s.count('t')
# ‘PATest’共6个字母,那么我就创建元素都是空串的列表,例如例子里最多的字母是e,有7个,即最大可组成7个PATest,那么列表就准备6*7=42个空串元素,['','','','','','']*7
most=max(P,A,T,e,_s,t)
lst=['']*most*6
# 然后就按顺序给列表空串元素替换成相应的字母,按索引顺序,step为6来一个个替换,最后再把列表元素join一起即可
for i in range(0,P*6,6):
    lst[i] = 'P'
for i in range(1,A*6,6):
    lst[i] = 'A'
for i in range(2,T*6,6):
    lst[i] = 'T'
for i in range(3,e*6,6):
    lst[i] = 'e'
for i in range(4,_s*6,6):
    lst[i] = 's'
for i in range(5,t*6,6):
    lst[i] = 't'

print(''.join(lst))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值