主題

ZeroJudge - b847: 一些字串 解題心得

Not In My Back Yard | 2021-02-08 00:00:03 | 巴幣 0 | 人氣 20

題目連結:


題目大意:
每列給定一個字串,請統計其中每個英文字母('a' ~ 'z' ,大小寫之差異視為相同字母)之出現次數以及其佔所有字母之比例(以百分比計,所以例如 0.2 這個比例應寫為 20.0)。

每列即一個測試資料,每筆輸出兩列。第一列輸出 26 個非負整數,代表 'a' ~ 'z' 於輸入之出現次數;第二列輸出 26 個非負浮點數(四捨五入至小數點後第二位),代表 'a' ~ 'z' 每個字母佔所有字母之比例。輸出格式參見範例輸出。



範例輸入:
apple
banana
cat
dog


範例輸出:
1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0
20.00 0.00 0.00 0.00 20.00 0.00 0.00 0.00 0.00 0.00 0.00 20.00 0.00 0.00 0.00 40.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
3 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0
50.00 16.67 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 33.33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
33.33 0.00 33.33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 33.33 0.00 0.00 0.00 0.00 0.00 0.00
0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0.00 0.00 0.00 33.33 0.00 0.00 33.33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 33.33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00


解題思維:
本題有一個陷阱,那就是沒有規定輸入的字串會出現哪些字元(但是幸好只有 ASCII 編碼有的字元,沒有 Unicode 等等),而本題會出現一些不是英文字母的字元以及空白字元。

因此,輸入時應一次讀入一整列。然後掃描整個字串並過濾出那些是英文字母的部分。然後統計那些字母的出現次數(注意,本題不區分大小寫的差異)。最後就直接輸出每個字母的出現次數以及每個字母的比例(請記得其為以百分比計)即可。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作