唯一摩爾斯密碼詞

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

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

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

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

例如:
輸入: words = [“gin”, “zen”, “gig”, “msg”]
輸出: 2
解釋:
各單詞翻譯如下:
“gin” -> “–…-.”
“zen” -> “–…-.”
“gig” -> “–…–.”
“msg” -> “–…–.”
共有 2 種不同翻譯, “–…-.” 和 “–…–.”.

注意:

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


思考:java中char是可以轉換成int的,’a’=97,’z’=122,可以用char-97作爲摩斯編碼數組的下標。

    public static void main(String[] args) {
        String[] words={"gin", "zen", "gig", "msg"};
        System.out.println(new Test().uniqueMorseRepresentations(words));

    }

    String[] mor={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};

    public int uniqueMorseRepresentations(String[] words) {
        Set<String> set=new HashSet<>();
        for(String word:words){
            set.add(toMorStr(word));
        }
        return set.size();

    }

    // 轉換word爲摩斯編碼字符串
    private String toMorStr(String word){
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<word.length();i++){
            sb.append(mor[word.charAt(i)-97]);
        }
        return sb.toString();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章