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