【LeetCode】C++ :簡單題 - 字串 804. 唯一摩爾斯密碼詞
阿新 • • 發佈:2021-02-01
技術標籤:LeetCode# 字串leetcode字串演算法
難度簡單150
國際摩爾斯密碼定義一種標準編碼方式,將每個字母對應於一個由一系列點和短線組成的字串,比如:
"a"
對應".-"
,"b"
對應"-..."
,"c"
對應"-.-."
, 等等。為了方便,所有26個英文字母對應摩爾斯密碼錶如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]給定一個單詞列表,每個單詞可以寫成每個字母對應摩爾斯密碼的組合。例如,"cab" 可以寫成 "-.-..--...",(即 "-.-." + ".-" + "-..." 字串的結合)。我們將這樣一個連線過程稱作單詞翻譯。
返回我們可以獲得所有詞不同單詞翻譯的數量。
例如: 輸入: words = ["gin", "zen", "gig", "msg"] 輸出: 2 解釋: 各單詞翻譯如下: "gin" -> "--...-." "zen" -> "--...-." "gig" -> "--...--." "msg" -> "--...--." 共有 2 種不同翻譯, "--...-." 和 "--...--.".注意:
- 單詞列表
words
的長度不會超過100
。- 每個單詞
words[i]
的長度範圍為[1, 12]
。- 每個單詞
words[i]
只包含小寫字母。
題意理解半天。。。
簡單說一下思路:
把穿進去的單詞列表的單詞字母,用給定的密碼錶重新組合,用set儲存重組的單詞這樣得到的結果是不重複的。
class Solution { public: int uniqueMorseRepresentations(vector<string>& words) { vector<string> vec = { ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-", ".-..", "--","-.", "---",".--.","--.-",".-.","...","-","..-","...-", ".--","-..-","-.--","--.." }; unordered_set<string> res; for(int i = 0; i < words.size(); i++){ string s = ""; for(int j = 0; j < words[i].size(); j++){ s += vec[words[i][j] - 'a']; } res.insert(s); } return res.size(); } };