Minimum Window Substring LeetCode solution in JavaScript

1
var minWindow = function (s, t) {
2
const tf = {},
3
sf = {};
4
for (let c of t) {
5
tf[c] = (tf[c] || 0) + 1;
6
}
7
let l = 0,
8
r = 0,
9
rs = t.length;
10
let ml = -1,
11
mr = -1;
12
for (; r < s.length; r++) {
13
const c = s[r];
14

15
if (!tf[c]) continue;
16

17
const sc = sf[c] || 0;
18
sf[c] = sc + 1;
19
if (sf[c] <= tf[c]) {
20
rs--;
21
}
22

23
if (rs == 0) {
24
while (true) {
25
if (mr == -1 || mr - ml > r - l) {
26
[mr, ml] = [r, l];
27
}
28

29
const c = s[l];
30
if (!tf[c]) {
31
l++;
32
} else if (sf[c] - 1 < tf[c]) {
33
sf[c]--, l++, rs++;
34
break;
35
} else {
36
sf[c]--;
37
l++;
38
}
39
}
40
}
41
}
42
if (mr == -1) return "";
43
return s.slice(ml, mr + 1);
44
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0