「每日LeetCode」2022年4月10日

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

  1. 唯一摩尔斯密码词

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

思路

按题意模拟,转化为对应得字符,存入 set 中,最后返回 set 的 size 即可。

解答

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
/**
* @param {string[]} words
* @return {number}
*/
var uniqueMorseRepresentations = function (words) {
const arrMap = {
a: ".-",
b: "-...",
c: "-.-.",
d: "-..",
e: ".",
f: "..-.",
g: "--.",
h: "....",
i: "..",
j: ".---",
k: "-.-",
l: ".-..",
m: "--",
n: "-.",
o: "---",
p: ".--.",
q: "--.-",
r: ".-.",
s: "...",
t: "-",
u: "..-",
v: "...-",
w: ".--",
x: "-..-",
y: "-.--",
z: "--..",
};
const res = new Set();
for (const word of words) {
const str = word.split("").reduce((a, b) => a + arrMap[b], "");
res.add(str);
}
return res.size;
};