有沒有簡單的結構優化 - 對於任何給定的固定映射,有可能是爲精確測繪魔王位變換的優化,是在不同的體系結構和不同的輸入或好或壞。地圖/字典應該一直很好,代碼非常簡單。
我的官方建議是堅持這一點。查找性能對於這樣的代碼來說不太可能成爲問題,因爲很可能你可以比輸入/輸出更容易編碼/解碼。
由於這是一個學習練習,你想嘗試不同的可能性:對於文本 - >莫爾斯,你可以使用數組而不是地圖/字典。也許令人驚訝的是,這在C++中很難做到,而且是完全可移植的。下面假設所有大寫字母比A
更大char
值,這是不按標準保證:
std::string encode['Z'-'A'];
encode['A' - 'A'] = ".-";
encode['B' - 'A'] = "-...";
// etc.
encode['Z' - 'A'] = "--..";
如果你願意,認爲你的代碼將永遠只能在機器上,它的基本字符集有運行在連續運行的字母(ASCII的事實,但不是EBCDIC),你可以把它打掃乾淨了一點:
std::string encode[26] = {".-", "-...", /* etc */ "--.."};
查找存儲在變量c
字符:
morse = encode[c - 'A'];
Python版本可以假定爲ASCII(我認爲),並且您必須使用ord
。
爲了配合比大寫字母其他任何東西,你需要使用一個更大的陣列(包含一切可能的字符值的條目),或者多個陣列與邊界檢查,標點符號特殊情況的代碼等。
有趣的策略。感謝你的回答。 – user225312 2010-09-15 16:08:20