[30] 串联所有单词的子串

复制代码
/**
 * @param {string} s
 * @param {string[]} words
 * @return {number[]}
 */
var findSubstring = function (s, words) {
  const k = words[0].length; // 字符串长度
  let PointArray, Shed; // 存储占用情况
  const len = s.length;
  const result = [];
  let left, right;
  for (let t = 0; t < k; t++) {
    PointArray = [...words]; // 存储占用情况
    Shed = [];
    left = t; // 当下左下标
    right = t;
    for (; right < len;) {
      const str = s.slice(right, right + k);
      // 不存在该字符串
      if (!words.includes(str)) {
        left = right + k;;
        PointArray = [...words];
        Shed = [];
      } else {
        const index = PointArray.findIndex(item => item === str);
        // 已无可用
        if (index === -1) {
          // 从已匹配字符串查找
          const index2 = Shed.findIndex(item => item === str);
          const arr = Shed.splice(0, index2);
          PointArray = PointArray.concat(arr);
          const top = Shed.shift();
          Shed.push(top);
          left = left + k * (index2 + 1);

        } else {
          Shed.push(PointArray.splice(index, 1)[0]);
          // 如果字符串长度相等 匹配加1
          if (PointArray.length === 0) {
            result.push(left);
            left = left + k;
            PointArray.push(Shed.shift());
          }
        }
      }
      right = right + k;
    }
  }
  return result;
};
复制代码

 

posted @   人恒过  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示