美文网首页前端100问
【前端100问】Q71:实现一个字符串匹配算法,从长度为 n 的

【前端100问】Q71:实现一个字符串匹配算法,从长度为 n 的

作者: alanwhy | 来源:发表于2021-02-05 23:09 被阅读0次

写在前面

此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我
为了备战 2021 春招
每天一题,督促自己
从多方面多角度总结答案,丰富知识
实现一个字符串匹配算法,从长度为 n 的字符串 S 中,查找是否存在字符串 T,T 的长度是 m,若存在返回所在位置。
简书整合地址:前端 100 问

正文回答

// 因为 T 的 length 是一定的,所以在循环S的的时候 ,循环当前项 i 后面至少还有 T.length 个元素
const find = (S, T) => {
  if (S.length < T.length) return -1;
  for (let i = 0; i < S.length - T.length; i++) {
    if (S.substr(i, T.length) === T) return i;
  }
  return -1;
};
// 方法一:
// search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
const find = (S, T) => S.search(T);

// 方法二:
// match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
const find = (S, T) => {
  const matched = S.match(T);
  return matched ? matched.index : -1;
};
// 完全不用api
getIndexOf = function (s, t) {
  let n = s.length;
  let m = t.length;
  if (!n || !m || n < m) return -1;
  for (let i = 0; i < n; i++) {
    let j = 0;
    let k = i;
    if (s[k] === t[j]) {
      k++;
      j++;
      while (k < n && j < m) {
        if (s[k] !== t[j]) break;
        else {
          k++;
          j++;
        }
      }
      if (j === m) return i;
    }
  }
  return -1;
};

相关文章

  • 字符串匹配

    朴素字符串匹配算法 这里假设text是一个文本,长度为n。pattern是需要匹配的子串,长度为m。 朴素字符串匹...

  • 【前端100问】Q71:实现一个字符串匹配算法,从长度为 n 的

    写在前面 此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我[https://github.co...

  • KMP算法

    对于长度分别为m与n的两字符串进行匹配的时间复杂度为O(m+n)的字符串匹配算法。 思想 设主串为 M,待匹配串为...

  • 字符串匹配(支持通配符* ? )

    设*可以匹配0~n个任意字符,?可以匹配一个任意字符,实现字符串含通配符的匹配算法,查找算法 参考阅读 c语言实现...

  • 串--模式匹配算法

    BF算法--朴素匹配算法(暴力匹配算法) 主串中,检查起始位置分别是 0、1、2…n-m 且长度为 m 的 n-m...

  • 最长前后缀

    题目 实现函数:输入一个长度为n的字符串,输出长度为n的数组,其中第i位表示从0到i的子串的最长前后缀长度。例如a...

  • Python字符串匹配

    假设有两个字符串:t(目标串,长度n)和p(模式串,长度m),通常m<

  • 字符串查找算法总结(暴力匹配、KMP 算法、Boyer-Moor

    点击进入我的博客查看原文。 字符串匹配是字符串的一种基本操作:给定一个长度为 M 的文本和一个长度为 N 的模式串...

  • 字符串匹配--KMP算法

    字符串匹配(查找)算法是一类重要的字符串算法(String Algorithm)。有两个字符串, 长度为m的hay...

  • 字符串匹配--Sunday算法

    字符串匹配(查找)算法是一类重要的字符串算法(String Algorithm)。有两个字符串, 长度为m的hay...

网友评论

    本文标题:【前端100问】Q71:实现一个字符串匹配算法,从长度为 n 的

    本文链接:https://www.haomeiwen.com/subject/izcntltx.html