「每日LeetCode」2022年10月17日

本文最后更新于:2023年3月19日 晚上

804.唯一摩尔斯密码词

804.唯一摩尔斯密码词

Category Difficulty Likes Dislikes
algorithms Easy (82.28%) 243 -

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

  • ‘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] 由小写英文字母组成

Discussion | Solution

思路

按题意模拟即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
* @lc app=leetcode.cn id=804 lang=javascript
*
* [804] 唯一摩尔斯密码词
*/

// @lc code=start
/**
* @param {string[]} words
* @return {number}
*/
var uniqueMorseRepresentations = function (words) {
const arr = [
".-",
"-...",
"-.-.",
"-..",
".",
"..-.",
"--.",
"....",
"..",
".---",
"-.-",
".-..",
"--",
"-.",
"---",
".--.",
"--.-",
".-.",
"...",
"-",
"..-",
"...-",
".--",
"-..-",
"-.--",
"--..",
];

const set = new Set();

for (const word of words) {
let str = "";
for (const char of word) {
str += arr[char.charCodeAt() - 97];
}
set.add(str);
}
return set.size;
};
// @lc code=end