close
Content
給你一列文字,請你找出各字元出現的次數。
Input
每筆測試資料一列。每列最大長度為1000。
Output
對每一列輸入,請輸出各字元的ASCII值及其出現的次數。請根據出現的次數由小到大輸出。如果有2個以上的字元有相同的次數,則ASCII值較大的先輸出。 測試資料間請空一列,參考Sample Output
Sample Input #1
AAABBC 122333
Sample Output #1
67 1 66 2 65 3 49 1 50 2 51 3
from sys import stdin from collections import Counter #對每一列輸入,請輸出各字元的ASCII值及其出現的次數 for s in stdin: s=s.strip()#讀取砍掉換行符號 s=[ord(i) for i in s]#創一個list立面放轉ascii的字符 c=Counter(s)#轉化成一個字典 #這裡要把dic轉成list,因為要排序 p=[(key,value)for key,value in c.items()] p.sort( key=lambda z: (z[1],-z[0]) ) # z對應每個p元素 # z[0]要由小到大,題目說根據出現的次數由小到大輸出 # z[1]由大到小,題目說字元有相同的次數,則ASCII值較大的先輸出 g=["{} {}".format(key,value)for key,value in p ] #用format可以將tuple轉換成字串,再把字串丟進list裡 # [(103, 1), (121, 2)] #第一種輸出方式 #print(*g,sep='\n') #第二種輸出方式 r="\n".join(g) print(r)
文章標籤
全站熱搜
留言列表