Minimum Window Substring LeetCode solution in JavaScript
1var minWindow = function (s, t) {2const tf = {},3sf = {};4for (let c of t) {5tf[c] = (tf[c] || 0) + 1;6}7let l = 0,8r = 0,9rs = t.length;10let ml = -1,11mr = -1;12for (; r < s.length; r++) {13const c = s[r];1415if (!tf[c]) continue;1617const sc = sf[c] || 0;18sf[c] = sc + 1;19if (sf[c] <= tf[c]) {20rs--;21}2223if (rs == 0) {24while (true) {25if (mr == -1 || mr - ml > r - l) {26[mr, ml] = [r, l];27}2829const c = s[l];30if (!tf[c]) {31l++;32} else if (sf[c] - 1 < tf[c]) {33sf[c]--, l++, rs++;34break;35} else {36sf[c]--;37l++;38}39}40}41}42if (mr == -1) return "";43return s.slice(ml, mr + 1);44};