欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实现一个字符串匹配算法(如果不能基于indexOf/includes等内置方法)

程序员文章站 2022-03-01 14:53:50
...

【 学习探索过程中记下的点点笔记,以供分享,欢迎大家一起学习探讨~如有雷同可附链接,谦虚学习!】

实现一个字符串匹配算法,从字符串S中,查找是否存在字符串T。若存在,返回所在位置;不存在则返回-1。

这里介绍2种方法

方法一:
循环原始字符串中的每一项,让每一项从当前向后截取T.length个字符,然后和T进行比较。如果不一样,继续循环;如果一样,返回当前索引即可(循环结束)。

function {
  function myIndexOf(T) {
	  //=>This这里指向 S
	  let lenT = T.length,
	      lenS = this.length,
	      res = -1;
	  if(lenT > lenS) return -1;
	  for(let i = 0;i <= lenS - lenT; i++ ) {
	    if(this.substr(i,lenT) === T) {
	      res = i;
	      break;
	    }
	  }
     return res;
  }
  String.prototype.myIndexOf = myIndexOf;
}();

let S = 'testField',
    T = 'Field';
console.log(S.myIndexOf(T));

方法二:
正则处理。生成正则表达式并用exec()方法捕获,返回null说明不存在;存在则使用返回对象的index索引号赋值。

function {
  function myIndexOf(T) {
	  //=>This这里指向 S
	  let reg = new RegExp(T);
	  res = reg.exec(this);
	  return res === null ?  -1 : res.index;
  }
  String.prototype.myIndexOf = myIndexOf;
}();

let S = 'testField',
    T = 'Field';
console.log(S.myIndexOf(T));
相关标签: JS