牛客华为机试-名字的漂亮度
题目描述
给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
Input:
整数N,后续N个名字
Output:
每个名称可能的最大漂亮程度
Sample Input:
2 zhangsan lisi
Sample Output:
192 101
思路
将输入数据去重,并记录出现的次数,次数最多的记为26,其次记为25……,最大漂亮度为次数和单个字符漂亮度乘积的和
代码实现
while True: #处理多组输入 try: n = int(input().strip()) #接收待处理的数据个数 if not n:break for i in range(n): #接收每个待处理的字符串 s = input().strip().lower() if not s.isalpha():break #输入不是字母为非法输入 l = [] res = 0 for i in list(set(s)): #记录字母出现次数 l.append(s.count(i)) l = sorted(l,reverse=True) #将字母出现次数从大到小排序 for i in range(len(l)): #计算最大漂亮度 res += l[i]*(26-i) print(res) except: break