天天看點

leetcode刷題:唯一摩爾斯密碼詞

國際摩爾斯密碼定義一種标準編碼方式,将每個字母對應于一個由一系列點和短線組成的字元串, 比如: “a” 對應 “.-“, “b” 對應 “-…”, “c” 對應 “-.-.”, 等等。

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

[“.-“,”-…”,”-.-.”,”-..”,”.”,”..-.”,”–.”,”….”,”..”,”.—”,”-.-“,”.-..”,”–”,”-.”,”—”,”.–.”,”–.-“,”.-.”,”…”,”-“,”..-“,”…-“,”.–”,”-..-“,”-.–”,”–..”]

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

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

例如:

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

共有 2 種不同翻譯, "--...-." 和 "--...--.".      
HashSet<String> hashSet = new HashSet<>();
        String[] morse = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
        for(String word:words){
            StringBuffer sb = new StringBuffer();
            for(char w:word.toCharArray()){
                sb.append(morse[w-'a']);
            }
            hashSet.add(sb.toString());
        }
        return