0804. Unique Morse Code Words

0804. Unique Morse Code Words #

题目 #

  • 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:

    • 'a' 对应 ".-"
    • 'b' 对应 "-..."
    • 'c' 对应 "-.-." ,以此类推。
  • 为了方便,所有 26 个英文字母的摩尔斯密码表如下:

    [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
    
  • 给你一个字符串数组 words ,每个单词可以写成每个字母对应摩尔斯密码的组合。

    • 例如,"cab" 可以写成 "-.-..--..." ,(即 "-.-." + ".-" + "-..." 字符串的结合)。我们将这样一个连接过程称作 单词翻译
  • words 中所有单词进行单词翻译,返回不同 单词翻译 的数量。

思路 #

哈希 #

代码 #

哈希 #

class Solution {
    public String charToString(Character ch) {
        switch (ch) {
            case 'a' : return ".-";
            case 'b' : return "-...";
            case 'c' : return "-.-.";
            case 'd' : return "-..";
            case 'e' : return ".";
            case 'f' : return "..-.";
            case 'g' : return "--.";
            case 'h' : return "....";
            case 'i' : return "..";
            case 'j' : return ".---";
            case 'k' : return "-.-";
            case 'l' : return ".-..";
            case 'm' : return "--";
            case 'n' : return "-.";
            case 'o' : return "---";
            case 'p' : return ".--.";
            case 'q' : return "--.-";
            case 'r' : return ".-.";
            case 's' : return "...";
            case 't' : return "-";
            case 'u' : return "..-";
            case 'v' : return "...-";
            case 'w' : return ".--";
            case 'x' : return "-..-";
            case 'y' : return "-.--";
            case 'z' : return "--..";
        }
        return "";
    }
    public int uniqueMorseRepresentations(String[] words) {
        Set<String> set = new HashSet<>();
        for (String word: words) {
            String str = "";
            for (int i = 0; i < word.length(); i++) str += charToString(word.charAt(i));
            set.add(str);
        }
        return set.size();
    }
}

致谢 #

宫水三叶