JS前端算法:关联子串

JS前端算法:关联子串,第1张

// 关联子串
// 给定两个字符串str1和str2,如果字符串str1中的字符,经过排列组合后的字符串中,只要有一个字符串是str2的子串,则认为str1是str2的关联子串。
function strHas(str1, str2) {
  let n = str1.length; // 字符串1的长度
  let len = str2.length; // 字符串2的长度
  let tmp = str1; // 临时字符串
  let index = -1; // 需要输出的当前位置
  for (let i = 0; i < len; i++) {
    if (!tmp) { // 临时字符串已经1v1地replace完了
      index = i - n; // 减去字符串1的长度得到关联子串起始位置
      break;
    } else if (tmp.indexOf(str2[i]) > -1) { // 关联子串中是否含有当前字符串
      tmp = tmp.replace(str2[i], ""); // 含有的话就replace
    } else {
      tmp = str1; // 如果不含,则返回完整的子串,重新下一步继续循环
    }
  }
  return index;
}
console.log(strHas("abc", "efghicabiii")); // 5
console.log(strHas("abc", "efghicaibii")); // -1

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1323020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存