leetcode

我的 leetcode 题解(JavaScript)


/**
 * @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));
};