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