假设有这样一个题目
实现一个字符串匹配算法,从字符串S中,查找是否存在字符串T,若存在返回所在位置,不存在则返回-1(如果不能够基于indexof/includes等内置方法,如何处理)
1 遍历
循环原始字符串的每一项,让每一项从当前截取T.length长度的字符,然后与T相比,如果不一样,继续循环,如果一样,返回当前索引值,循环结束,如果不存在,返回-1
String.prototype.myIndexOf = myIndexOf
function myIndexOf(T){
//this应该是原始字符串
let lenT = T.length
let lenS = this.length
let res = -1
if(lenT>lenS){
return -1
}
for(let i = 0;i<=lenS - lenT;i++){
let char = this[i]
if(this.substr(i,lenT) === T ) {
res = i
break
}
}
return res
}
let str = 'yghsl34'
t = 'hs'
console.log(str.myIndexOf(t))
2 正则运算
function myIndexOf(T){
let reg = new RegExp(T)
let res = reg.exec(this)
console.log(res)
return res === null ? -1 : res.index
}
let str = 'yghsl34'
t = 'hs'
console.log(str.myIndexOf(t))
- 本文作者: étoile
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!