iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
SideProject30

UVA題型研究系列 第 28

DAY28:Tell me the frequencies!

  • 分享至 

  • xImage
  •  

41 UVA10062 Tell me the frequencies!
內容
給你一列文字,請你找出各字元出現的次數。

輸入說明
每筆測試資料一列。每列最大長度為1000。

輸出說明
對每一列輸入,請輸出各字元的ASCII值及其出現的次數。請根據出現的次數由小到大輸出。如果有2個以上的字元有相同的次數,則ASCII值較大的先輸出。 測試資料間請空一列,參考Sample Output

範例輸入 #1
AAABBC
122333
範例輸出 #1
67 1
66 2
65 3

49 1
50 2
51 3
題解:對每一列輸入,輸出各字元的 ASCII & 次數

# 初始化計數器 c 為 0
c = 0 

# 進入無窮迴圈
while True: 
    try: 
        # 讀取輸入字串
        n = input() 
    except EOFError: 
        # 若遇到EOFError(通常表示檔案結尾),跳出迴圈
        break 

    # 建立一個長度為257的列表,初始化所有元素為0,用來計算每個字元的出現次數
    a = [0 for i in range(257)] 

    # 遍歷輸入字串,將每個字元的出現次數記錄在列表 a 中
    for i in n: 
        a[ord(i)] += 1 

    # 如果是第一次迴圈之後的輸入,印出空行以區隔前後輸入
    if c > 0: 
        print() 
    # 更新計數器
    c += 1 

    # 遍歷字元出現次數列表 a
    for i in range(1, len(n)+1): 
        # 逆序遍歷,找到第一個出現次數為 i 的字元
        for j in range(256, 0, -1): 
            if a[j] == i: 
                # 印出字元的Unicode碼點和出現次數
                print(j, i)

上一篇
DAY27:Satellites
下一篇
DAY29:Train Swapping
系列文
UVA題型研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言