题目链接:804.唯一摩尔斯密码词
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:
'a'
对应".-"
'b'
对应"-..."
'c'
对应"-.-."
,以此类推。为了方便,所有 26 个英文字母的摩尔斯密码表如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
给你一个字符串数组 words ,每个单词可以写成每个字母对应摩尔斯密码的组合。
"cab"
可以写成 "-.-..--..."
,(即 "-.-." + ".-" + "-..."
字符串的结合)。我们将这样一个连接过程称作 单词翻译 。 对words
中所有单词进行单词翻译,返回不同 单词翻译 的数量。示例 1
输入: words = [“gin”, “zen”, “gig”, “msg”]
输出: 2
解释:
各单词翻译如下:
“gin” -> “–…-.”
“zen” -> “–…-.”
“gig” -> “–…–.”
“msg” -> “–…–.”
共有 2 种不同翻译, “–…-.” 和 “–…–.”.
示例 2
输入:words = [“a”]
输出:1
提示
words.length
<= 100words[i].length
<= 12words[i]
由小写英文字母组成注意不同的字母对应不同的解码,但是组成的结果可能相同,所以需要去重
直接将每个单词翻译,然后用集合去重
public int uniqueMorseRepresentations(String[] words) {
String[] password = new String[] {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
HashSet<String> set = new HashSet<>();
for (String word : words) {
StringBuilder temp = new StringBuilder();
for (int j = 0; j < word.length(); j++) {
int index = (word.charAt(j) - '0') - 49;
temp.append(password[index]);
}
set.add(temp.toString());
}
return set.size();
}