1. 程式人生 > >leetcode 804. 唯一摩爾斯密碼詞(Unique Morse Code Words)

leetcode 804. 唯一摩爾斯密碼詞(Unique Morse Code Words)

order 國際 獲得 ons 描述 word represent solution ins

目錄

  • 題目描述:
  • 示例:
  • 解法:

題目描述:

國際摩爾斯密碼定義一種標準編碼方式,將每個字母對應於一個由一系列點和短線組成的字符串, 比如: "a" 對應 ".-", "b" 對應 "-...", "c" 對應 "-.-.", 等等。

為了方便,所有26個英文字母對應摩爾斯密碼表如下:

[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]

給定一個單詞列表,每個單詞可以寫成每個字母對應摩爾斯密碼的組合。例如,"cab" 可以寫成 "-.-..--...",(即 "-.-." + "-..." + ".-"字符串的結合)。我們將這樣一個連接過程稱作單詞翻譯。

返回我們可以獲得所有詞不同單詞翻譯的數量。

示例:

輸入: words = ["gin", "zen", "gig", "msg"]
輸出: 2
解釋: 
    各單詞翻譯如下:
    "gin" -> "--...-."
    "zen" -> "--...-."
    "gig" -> "--...--."
    "msg" -> "--...--."

    共有 2 種不同翻譯, "--...-." 和 "--...--.".

註意:

  • 單詞列表words 的長度不會超過 100
  • 每個單詞 words[i]的長度範圍為 [1, 12]
  • 每個單詞 words[i]只包含小寫字母。

解法:

class Solution {
public:
    int uniqueMorseRepresentations(vector<string>& words) {
        vector<string> lst = {".-","-...","-.-.","-..",".","..-.",
                              "--.","....","..",".---","-.-",".-..",
                              "--","-.","---",".--.","--.-",".-.",
                              "...","-","..-","...-",".--","-..-",
                              "-.--","--.."};
        unordered_set<string> st;
        for(string word : words){
            string tmp = "";
            for(char ch : word){
                tmp += lst[ch - 'a'];
            }
            st.insert(tmp);
        }
        return st.size();
    }
};

leetcode 804. 唯一摩爾斯密碼詞(Unique Morse Code Words)