/**
* @param {string} text
* @param {string} first
* @param {string} second
* @return {string[]}
*/
const kmp = function (s1, s2) {
let next = [-1],
i = 0,
j = 0;
for (let val = -1, index = 0; index < s2.length;) {
if (val === -1 || s2[index] === s2[val]) {
++index;
++val;
next[index] = val;
} else {
val = next[val];
}
}
while (i < s1.length && j < s2.length) {
if (j === -1 || s1[i] === s2[j]) {
i++;
j++;
} else {
j = next[j];
}
}
if (j === s2.length)
return i - j;
else
return -1;
}
var findOcurrences = function (text, first, second) {
const text2arr = text.split(' ');
const fs2arr = [first, second];
let index = 0,
temp, res = [];
for (let i = 0; i < text2arr.length;) {
console.log(text2arr.slice(i));
temp = kmp(text2arr.slice(i), fs2arr);
i += temp;
if (temp === -1 || (i + 2) > text2arr.length - 1) {
console.log(res);
return res;
}
console.log(text2arr[i + 2]);
i += 2;
res.push(text2arr[i]);
}
// console.log(kmp(text2arr, fs2arr));
};