题解 | #名字的漂亮度#

名字的漂亮度

https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3

思路就是先把名字里字母次数对应起来,得到一个字典,
然后再把同样出现次数和对应的字母组成字典 ,接下来
就是等差数列的求和问题了
from collections import defaultdict
n = int(input())
names = []
for _ in range(n):
    names.append(input())

for n in names:
    counter = defaultdict(lambda:0)
    group = defaultdict(list)
    for i in n:
        counter[i]+=1
    for c in list(counter.items()):
        group[c[1]].append(c[0])
    #截止到这里,得到了一个按字母出现次数从大到小排列的
    #{次数:[字母列表]}这样的字典
    assist = list(group.items())
    assist.sort(key=lambda x:-x[0])
    beauty = 0
    s = 26
    for i in assist:      
        beauty+=i[0]*(s+s-len(i[1])+1)*len(i[1])/2
        s-=len(i[1])

    print(int(beauty))


全部评论

相关推荐

湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着...:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务