804. 唯一摩爾斯密碼詞
阿新 • • 發佈:2022-04-10
804. 唯一摩爾斯密碼詞 - 力扣(LeetCode) (leetcode-cn.com)
國際摩爾斯密碼定義一種標準編碼方式,將每個字母對應於一個由一系列點和短線組成的字串, 比如:
-
'a'
對應".-"
, -
'b'
對應"-..."
, -
'c'
對應"-.-."
,以此類推。
為了方便,所有 26
個英文字母的摩爾斯密碼錶如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
給你一個字串陣列 words
,每個單詞可以寫成每個字母對應摩爾斯密碼的組合。
- 例如,
"cab"
可以寫成"-.-..--..."
,(即"-.-."
+".-"
+"-..."
字串的結合)。我們將這樣一個連線過程稱作 單詞翻譯 。
對words
中所有單詞進行單詞翻譯,返回不同 單詞翻譯 的數量。
示例 1:
輸入: words = ["gin", "zen", "gig", "msg"] 輸出: 2 解釋: 各單詞翻譯如下: "gin" -> "--...-." "zen" -> "--...-." "gig" -> "--...--." "msg" -> "--...--." 共有 2 種不同翻譯, "--...-." 和 "--...--.".
示例 2:
輸入:words = ["a"]
輸出:1
提示:
- 1 <= words.length <= 100
- 1 <= words[i].length <= 12
- words[i] 由小寫英文字母組成
方法一:雜湊表
public int uniqueMorseRepresentations(String[] words) { if (words.length <= 1) { return words.length; } String[] strs = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."}; Set<String> sets = new HashSet<>(); for (String word : words) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < word.length(); i++) { stringBuilder.append(strs[word.charAt(i) - 'a']); } sets.add(stringBuilder.toString()); } return sets.size(); } }