欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

完美字符串

发布时间:2025/3/20 编程问答 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 完美字符串 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
       字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。字母不分大小写,也就是说字母F和f的完美度相同。       给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77。题目参考http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1182
分析:       (1)由于每个字母的完美度可以自由分配,那么要得到最大的完美度,显然字符串中数量越多的字母分配的完美度分值就应该越大。        (2)只需要统计出字符串包含的各个字母的数量,按照从大到小排序,再依次将完美度值从大到小进行赋值,最后得到的必然是最大完美度。       看代码:s = input().lower()
cs = 'abcdefghijklmnopqrstuvwxyz'
cd = sorted([[c, s.count(c)] for c in cs], key=lambda x: x[1], reverse=True)
print(sum([x[1] * v for x, v in zip(cd, range(26, 0, -1))]))       1)先将输入字符串s统一转换成小写;
       2)构建26个字母构成的序列cs;       3)通过列表推导式[[cs.count(c)] for in cs]构建一个字母和该字母在s中数量对应关系的列表,然后通过sorted内置排序函数通过各字母数量进行降序排序;       4)通过列表推导式和zip结合[x[1] * v for xin zip(cdrange(260-1))]
,将字母,字母在s中数量,相应的完美度值进行匹配组合,构成一个完美度值的新序列,然后用sum()函数进行完美度求和并输出。

       测试用例:EYBQTBTKQJ 输出结果:236

总结

以上是生活随笔为你收集整理的完美字符串的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。