题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
python的方法首先想到的是哈希表
将单词的每个单词和出现次数用字典表示dict
然后进行值用sorted排序,注意排序的结果是一个数组,数组里面是元组形式
复制一个dict为dict_1用来表示字符和得分的键值对
首先创建一个数组nums 用来存储分数,分数就是26:26—len(temp)的数字,因为每个字符得分不一样
然后遍历将得分数组与dict1的值更新
最后用dict_1每个字符的得分和dict每个字符出现次数相乘就是答案
n=int(input())
while True:
try:
for i in range(n):
str=input()
dict={}
for j in range(len(str)):
if str[j] in dict.keys():
dict[str[j]]+=1
else:
dict[str[j]]=1
temp=sorted(dict.items(),key=lambda x:x[1],reverse=True)
ans=[]
nums=[]
dict_1=dict.copy()
for num in range(26,26-len(temp),-1):
nums.append(num)
for index in range(len(temp)):
dict_1[temp[index][0]]=nums[index]
ans.append(dict_1[temp[index][0]]*dict[temp[index][0]])
print(sum(ans))
except:
break
