华为机试45-名字的漂亮度

题目描述
给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。 
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。 
给出多个名字,计算每个名字最大可能的“漂亮度”。 
输入描述:
整数N,后续N个名字

输出描述:
每个名称可能的最大漂亮程度

示例1
输入
2
zhangsan
lisi
输出
192
101

 

参考:

from collections import Counter
while True:
    try:
        n = int(input().strip())
        for _ in range(n):
            num = list(input().strip())
            re = Counter(num)     #使用 Counter
            res = []
            for s in re:
                res.append(re[s])   #提取 Counter信息,不能使用keys或values
            res.sort(reverse = True)
            n = len(res)
            m = 0
            k = 26
            for s in res:
                m += k*s
                k -= 1
            print(m)
    except:
        break

执行结果: 答案正确:恭喜!您提交的程序通过了所有的测试用例 用例通过率: 100.00% 运行时间: 29ms 占用内存: 3716KB

 

参考2:

复制代码
from collections import Counter
while True:
    try:
        a=int(input())
        for i in range(a):
            c,start,res=Counter(input()),26,0
            for j in c.most_common():
                res+=j[1]*start
                start-=1
            print(res)
 
    except:
        break
复制代码

执行结果: 答案正确:恭喜!您提交的程序通过了所有的测试用例 用例通过率: 100.00% 运行时间: 29ms 占用内存: 3716KB

 

posted @ 2020-08-31 22:31  Andy_George  阅读(267)  评论(0编辑  收藏  举报