给出一个名字,该名字有26个字符组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。
本题含有多组数据。
数据范围:输入的名字长度满足 1 \le n \le 10000 \1≤n≤10000
输入描述:
整数N,后续N个名字
输出描述:
每个名称可能的最大漂亮程度
示例1
输入:
2 zhangsan lisi复制
输出:
192 101 #题目思路,是计算最多字符出现次数,按照最达26去计算,即获取输入后存储列表,再把列表中数据转为集合(集合自动去重),把集合中每个元素重复次数存入新列表s2_list, #再对列表进行sort排序,reserver()反转,这样列表里保存的就算每个名字单个字母最多出现次数,从大到小排序,再根据s3列表保存默认漂亮度【26-1】,与s2_list列表下标 #保持一致,循环处理s2_list列表,即可。 #最后需要确保beautiful和s2_list需要每个
while True: try: N=int(input()) s1_list=[] s2_list=[] s3_list=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26] while N>0: s1_list.append(input()) N=N-1 for i in s1_list: beautiful=0 s2_list=[] for j in set(i): s2_list.append(i.count(j)) s2_list.sort() s2_list.reverse() for i in range(len(s2_list)): beautiful=beautiful+s2_list[i]*s3_list[25-i] print(beautiful) except: break