-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path030.js
More file actions
43 lines (40 loc) · 946 Bytes
/
030.js
File metadata and controls
43 lines (40 loc) · 946 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* @param {string} s
* @param {string[]} words
* @return {number[]}
*/
var findSubstring = function(s, words) {
const getMap = () => {
let map = {};
words.forEach(word => {
if (word in map) {
map[word] = map[word] + 1;
} else {
map[word] = 1;
}
});
return map;
}
if (words.length === 0) return [];
let wordLength = words[0].length;
let results = [];
for(let i = 0; i <= s.length - wordLength * words.length; i = i + 1) {
let map = getMap();
let j = i;
while(j <= s.length - wordLength) {
const subString = s.substr(j, wordLength);
if (subString in map) {
if (map[subString] === 1) {
delete map[subString];
} else {
map[subString] = map[subString] - 1;
}
j = j + wordLength;
} else {
break;
}
}
if (Object.keys(map).length === 0) results.push(i);
}
return results;
};