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();
}
}