牛客华为机试-名字的漂亮度
题目描述
给出一个名字,该名字有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
京公网安备 11010502036488号