Naming a Company LeetCode solution in JavaScript

1
/**
2
* @param {string[]} ideas
3
* @return {number}
4
*/
5
var distinctNames = function (ideas) {
6
let res = 0;
7
let lMap = new Map();
8

9
for (let i = 0; i < ideas.length; i++) {
10
let idea = ideas[i];
11
// extract first letter
12
let l = idea[0].charCodeAt() - 97;
13
// extract substring
14
let s = idea.substr(1);
15
// group substring by first letter
16
if (lMap.has(l)) {
17
// must use map not array
18
let m = lMap.get(l);
19
m.set(s, 1);
20
lMap.set(l, m);
21
} else {
22
let m = new Map();
23
m.set(s, 1);
24
lMap.set(l, m);
25
}
26
}
27

28
for (let i = 1; i < 26; i++) {
29
for (let j = 0; j < i; j++) {
30
// count substring with different first letter
31
let m = 0;
32
let m1 = lMap.has(i) ? lMap.get(i) : new Map();
33
let m2 = lMap.has(j) ? lMap.get(j) : new Map();
34
// both map must exist
35
if (m1.size > 0 && m2.size > 0) {
36
let k1 = Array.from(m1.keys());
37
for (let k = 0; k < k1.length; k++) {
38
if (m2.has(k1[k])) {
39
m++;
40
}
41
}
42
// the rest substring satisfy condition
43
res += (m1.size - m) * (m2.size - m);
44
}
45
}
46
}
47
// double for count A + B and B + A
48
res = res * 2;
49
return res;
50
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0