题解 | #名字的漂亮度#

名字的漂亮度

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

'''
1、先set()获得该字符串有哪些字母
2、统计每个字母出现的次数
3、从大到小排列字母
4、给每个字母分配数字大小从26开始分配
5、求和
'''
def pld(s):
    # 知道该字符串中有哪些字母
    list_zm=list(set(s))# set()返回的是一个{}集合类型数组,但是可以不用list直接用sorted,返回值为列表
    # 字典1:统计字符串中字母出现次数
    dic1={}
    for zm in s:
        if zm not in dic1:
            dic1[zm]=1
        elif zm in dic1:
            dic1[zm]=dic1[zm]+1
    # 用字典里统计的数字对去重后的list_zm进行排序
    list_new=sorted(list_zm,key=lambda x:dic1.get(x),reverse=True)
    # 字典2:记录每个字母分配的数值
    dic2={}
    k=26
    for w1 in list_new:
        dic2[w1]=k
        k=k-1
    # 求和
    zonghe=0
    for w2 in s:
        zonghe=zonghe+dic2[w2]
    return zonghe

n=int(input())
for _ in range(n):
    print(pld(input()))
    

【牛客站内】华为机试题练习记录

全部评论

相关推荐

死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
11-15 19:28
已编辑
蚌埠坦克学院 硬件开发
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务