前往
大廳
主題

ZeroJudge - a631: 11. LED Decoder 解題心得

Not In My Back Yard | 2021-05-21 00:00:11 | 巴幣 0 | 人氣 205

題目連結:


題目大意:
給定一個 LED 顯示器的各個線條之編號如下:
並再給定各個大寫英文字母於 LED 顯示器的樣式:

輸入有多列,每列給定一字串,其可能包含大寫英文字母、空白字元或是數字。字串中的數字即代表著上述的編碼之一(不過,當有「0」不屬於任何正確的編碼時即代表著空白字元)。

請將數字解碼後的字串輸出(保證給定的編碼都可以解碼,即編碼都是正確的)。



範例輸入:
HELL1235670WO1234591561580
PROGRAMMING037124670C123567123567156
AND MORE037124903735790278134573712467045612356735792781245612467278


範例輸出:
HELLO WORLD
PROGRAMMING IS COOL
AND MORE IF IN THIS CONTEST


解題思維:
建表。對,就是把 26 個大寫字母與其對應編碼建立成一個表格以供查詢。



雖然原題的敘述有寫編碼不會混淆,但是實際上有著類似以下測資:
01580
再加上沒有說編碼是否按照特定順序給定。所以上面的編碼可以被解讀為
'D' + ' ' 或是 ' ' + 'D'
而上述於本題中的「答案」是後者。

所以本題的編碼依舊有一定的順序——如果一個字母的編碼有著「0」則他會在該編碼的結尾。

因此當我們掃過字串時,遇到非數字字元就輸出,而遇到數字時就一位一位加進當前的編碼(除了「0」比較特別,需要存在別的地方)。

當目前編碼可以出現於表中時就輸出對應的字元;反之就看有沒有「0」,有就加進編碼裡找找看,有的話就輸出。當「0」出現,但是目前編碼為空時,根據上面的觀察,這個「0」一定代表空白因此輸出空白字元。




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

創作回應

相關創作

更多創作