MCPcopy Create free account
hub / github.com/neetcode-gh/leetcode / checkInclusion

Function checkInclusion

javascript/0567-permutation-in-string.js:8–33  ·  view source on GitHub ↗
(s1, s2)

Source from the content-addressed store, hash-verified

6 * @return {boolean}
7 */
8var checkInclusion = (s1, s2) => {
9 const isInvalid = s2.length < s1.length;
10 if (isInvalid) return false;
11
12 let [left, right] = [0, 0];
13 const [s1FrequencyMap, s2FrequencyMap] = getFrequencyMaps(s1);
14
15 while (right < s2.length) {
16 addRightFrequency(s2, right, s2FrequencyMap);
17
18 const window = right - left + 1;
19 const isPermutation =
20 window === s1.length && isSame(s1FrequencyMap, s2FrequencyMap);
21 if (isPermutation) return true;
22
23 const canSlide = s1.length <= window;
24 if (canSlide) {
25 subtractLeftFrequency(s2, left, s2FrequencyMap);
26 left++;
27 }
28
29 right++;
30 }
31
32 return false;
33};
34
35const getFrequencyMaps = (s1) => {
36 const [s1FrequencyMap, s2FrequencyMap] = new Array(2)

Callers

nothing calls this directly

Calls 4

getFrequencyMapsFunction · 0.85
addRightFrequencyFunction · 0.70
isSameFunction · 0.70
subtractLeftFrequencyFunction · 0.70

Tested by

no test coverage detected