leetcode.804 唯一摩爾斯密碼詞
阿新 • • 發佈:2018-11-25
國際摩爾斯密碼定義一種標準編碼方式,將每個字母對應於一個由一系列點和短線組成的字串, 比如: "a"
對應 ".-"
, "b"
對應 "-..."
, "c"
對應 "-.-."
, 等等。
為了方便,所有26個英文字母對應摩爾斯密碼錶如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
給定一個單詞列表,每個單詞可以寫成每個字母對應摩爾斯密碼的組合。例如,"cab" 可以寫成 "-.-..--...",(即 "-.-." + "-..." + ".-"字串的結合)。我們將這樣一個連線過程稱作單詞翻譯。
返回我們可以獲得所有詞不同單詞翻譯的數量。
例如: 輸入: words = ["gin", "zen", "gig", "msg"] 輸出: 2 解釋: 各單詞翻譯如下: "gin" -> "--...-." "zen" -> "--...-." "gig" -> "--...--." "msg" -> "--...--." 共有 2 種不同翻譯, "--...-." 和 "--...--.".
注意:
- 單詞列表
words
的長度不會超過100
。 - 每個單詞
words[i]
的長度範圍為[1, 12]
。 - 每個單詞
words[i]
只包含小寫字母。
思路一:用字元陣列 a 儲存莫爾斯密碼,先遍歷 words 字元陣列的每一個字串,然後用得到的字串的每一個字元減去 'a',得到整數,利用此整數在陣列 a 中得到相應的莫爾斯密碼,最後利用 set 的不重複特性加入此莫爾斯密碼,最後返回 set 的 size 即可。
程式碼:
class Solution { public int uniqueMorseRepresentations(String[] words) { String[] a = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}; Set<String> set = new HashSet<>(); for(int i = 0;i < words.length; i++){ String b = ""; for(int j = 0;j < words[i].length(); j++){ int c = words[i].charAt(j) - 'a'; b += a[c]; } set.add(b); } return set.size(); } }