友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
|
|
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。

公众号的微信号是: jikerizhi。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
804. 唯一摩尔斯密码词
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:
-
a对应.-, -
b对应-…, -
c对应-.-.,以此类推。
为了方便,所有 26 个英文字母的摩尔斯密码表如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
给你一个字符串数组 words,每个单词可以写成每个字母对应摩尔斯密码的组合。
-
例如,
cab可以写成-.-..--…,(即-.-.+.-+-…字符串的结合)。我们将这样一个连接过程称作 单词翻译 。
对 * words 中所有单词进行单词翻译,返回不同 *单词翻译 的数量。
示例 1:
输入: words = ["gin", "zen", "gig", "msg"] 输出: 2 解释: 各单词翻译如下: "gin" -> "--...-." "zen" -> "--...-." "gig" -> "--...--." "msg" -> "--...--." 共有 2 种不同翻译, "--...-." 和 "--...--.".
示例 2:
输入:words = ["a"] 输出:1
提示:
-
1 <= words.length <= 100 -
1 <= words[i].length <= 12 -
words[i]由小写英文字母组成
思路分析
一个简单的字母“转录”摩尔斯码。
-
一刷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @author D瓜哥 · https://www.diguage.com
* @since 2026-06-30 21:42:07
*/
public int uniqueMorseRepresentations(String[] words) {
String[] MORSE = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
"....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-",
".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
Set<String> set = new HashSet<>();
for (String word : words) {
StringBuilder sb = new StringBuilder();
for (char c : word.toCharArray()) {
sb.append(MORSE[c - 'a']);
}
set.add(sb.toString());
}
return set.size();
}

