1. 程式人生 > >804. 唯一摩爾斯密碼詞

804. 唯一摩爾斯密碼詞

urn 方便 輸入 unique 不同 我們 uniq 註意 str

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

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

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

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

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

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

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

註意:

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

 1
static const auto __ = []() 2 { 3 ios::sync_with_stdio(false); 4 cin.tie(nullptr); 5 return nullptr; 6 }(); 7 class Solution { 8 public: 9 int uniqueMorseRepresentations(vector<string>& words) { 10 string passwd[] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
11 map<char,string>mapp; 12 map<string,int>res; 13 char a = ‘a‘; 14 for(int i= 0; i < 26; i++) { 15 mapp.insert(pair<char, string>(a+i,passwd[i])); 16 } 17 18 for(string word:words) { 19 string ans = ""; 20 for(char ch:word) { 21 ans += (mapp.find(ch)->second); 22 } 23 res.insert(pair<string,int>(ans,0)); 24 } 25 26 return res.size(); 27 } 28 };

804. 唯一摩爾斯密碼詞