PTA:Python解答1042 字符统计/1043 输出PATest

1042 字符统计 (20分)

请编写程序,找出一段给定文字中出现最频繁的那个英文字母。

输入格式:

输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。

输出格式:

在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。

输入样例:

This is a simple TEST.  There ARE numbers and other symbols 1&2&3...........

输出样例:

e 7

解题思路:

因为统计时不区分大小写,且只输入小写字母,所以在输入的时候可以把所有字母转换为小写。然后用字典的get方法把字母对应出现的次数存入字典,接着再判断是否有次数并列一样多的,按格式输出即可。

完整代码:

n = input().lower().split()
dl = {}
s = 'abcdefghijklmnopqrstuvwxyz'
for i in n:
    for j in i:
        if j in s:
            dl[j] = dl.get(j,0)+1
ls = list(dl.items())
ls.sort(key = lambda x:x[1],reverse = True)
lss = []
for i in ls[1:]:
    if i[1] == ls[0][1]:
        lss.append(i)
if lss == []:
    print(ls[0][0],ls[0][1])
else:
    lss.append(ls[0])
    lss.sort(key = lambda x:x[0],reverse = False)
    print(lss[0][0],lss[0][1])
1043 输出PATest (20分)

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

输入格式:

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

输出格式:

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

输入样例:

redlesPayBestPATTopTeePHPereatitAPPT

输出样例:

PATestPATestPTetPTePePee

解题思路:

这道题还是用创建一个全是0的列表,然后在索引位置加一,对应六个字母出现的次数,然后按照这个顺序依次输出,输出一个次数减1。

完整代码:

n = input()
str1 = 'PATest'
ls = [0 for i in range(6)]
for s in n:
    a = str1.find(s)
    if a >= 0:
        ls[a] += 1
 
while True:
    flag = 0
    for i in range(6):
        num = ls[i]
        if num != 0:
            flag = 1
            ls[i] -= 1
            print(str1[i],sep='',end='')
    if flag == 0:
        break
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注