题解 | #名字的漂亮度#

名字的漂亮度

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

# 让字符串中数量最多的元素,为26,

"""
第一、根据题意,逐步梳理最原始的思路,逐步写到一起,从最原始的思路中逐步找规律,
让字符串中数量最多的元素,为26,
    如果还有数量跟最多的一样的,则是25,
    如果还有数量跟最多的一样的,则是24
数量少一点的,批量度是23,
数量再少一点的,漂亮都是22,
。。。

第二、找到规律后,梳理出代码要实现的方式是什么,先写最原始的。迭代的思维逻辑很关键,先实现小的思路,在实现大一点的思路,
比如:直接一下子处理2个字符串,你可能觉得很绕,所以,你先单独处理一个字符串,等处理ok,你再for循环处理第二个,岂不是很棒?

根据数量对字母做一个排序,字母的顺序是 数量由多到少,数量一样的放在一起。不一样的单独放开。

[(l,l,l),(c,c),b,  a]
[3,        2,  1,  1]
[26,      25,  24, 23]

每个元素的个数乘以对应的数字,求和即可


"""

num = int(input())
li = []
for i in range(num):
    li.append(input())



# # 先处理一个字符串
# a = []
# for j in set(li[0]):
#     a.append(li[0].count(j))
# b = sorted(a, reverse=True)
# c = [i for i in reversed(range(27-len(a),27))]

# d = []
# for k,v in zip(b,c):
#     k1 = int(k)
#     v1 = int(v)
#     d.append(k1*v1)
# print(sum(d))


# 在处理多个字符串
for i in li:
    # 先处理一个字符串
    a = []
    for j in set(i):
        a.append(i.count(j))
    b = sorted(a, reverse=True)
    c = [i for i in reversed(range(27-len(a),27))]

    d = []
    for k,v in zip(b,c):
        k1 = int(k)
        v1 = int(v)
        d.append(k1*v1)
    print(sum(d))



#数据仓库与数据分析实习#
OD专栏练习梳理 文章被收录于专栏

OD专栏练习梳理

全部评论

相关推荐

点赞 评论 收藏
转发
1 5 评论
分享
牛客网
牛客企业服务