Find All Anagrams in a String LeetCode solution in JavaScript

1
var findAnagrams = function (s, p) {
2
function compareMaps(map1, map2) {
3
var testVal;
4
if (map1.size !== map2.size) {
5
return false;
6
}
7
for (var [key, val] of map1) {
8
testVal = map2.get(key);
9
// in cases of an undefined value, make sure the key
10
// actually exists on the object so there are no false positives
11
if (testVal !== val || (testVal === undefined && !map2.has(key))) {
12
return false;
13
}
14
}
15
return true;
16
}
17

18
let p_map = new Map();
19
let s_map = new Map();
20
let res = [];
21
let pn = p.length;
22
let sn = s.length;
23
for (let i in p) {
24
p_map.set(p[i], p_map.get(p[i]) ? p_map.get(p[i]) + 1 : 1);
25
s_map.set(s[i], s_map.get(s[i]) ? s_map.get(s[i]) + 1 : 1);
26
}
27
let l = 0;
28
if (compareMaps(s_map, p_map)) res.push(l);
29
for (let r = pn; r < sn; r++) {
30
s_map.set(s[r], s_map.get(s[r]) ? s_map.get(s[r]) + 1 : 1);
31
s_map.set(s[l], s_map.get(s[l]) - 1);
32
if (s_map.get(s[l]) === 0) {
33
s_map.delete(s[l]);
34
}
35
if (compareMaps(s_map, p_map)) res.push(l + 1);
36
l++;
37
}
38
return res;
39
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0