日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

完美字符串

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 完美字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??? ? ?字符串的完美度等于它里面所有字母的完美度之和。每個字母的完美度可以由你來分配,不同字母的完美度不同,分別對應一個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)通過列表推導式[[c,?s.count(c)]?for?c?in?cs]構建一個字母和該字母在s中數量對應關系的列表,然后通過sorted內置排序函數通過各字母數量進行降序排序;? ? ? ?4)通過列表推導式和zip結合[x[1] * v?for?x,?v?in?zip(cd,?range(26,?0,?-1))]
,將字母,字母在s中數量,相應的完美度值進行匹配組合,構成一個完美度值的新序列,然后用sum()函數進行完美度求和并輸出。

? ? ? ?測試用例:EYBQTBTKQJ 輸出結果:236

總結

以上是生活随笔為你收集整理的完美字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。