这个是很久以前写的一个东西了,当时是看王卓老师的数据结构视频的时候有感而发,写了一遍。开始进入正题
实现的功能:字符串中查找字符串
应用场景:在生物基因链中查找病毒基因链
上代码
// 面试题: 在str1 里面查找 str2 的位置,并以一个数组的形式输出 出来
// 答案 :[1, 5, 12, 19]
var str1 = 'ssjhgsjhffdgsjhdfsfsjh'
var str2 = 'sjh'
// bf算法穷举
function bf(s, t) {
let i = 0
let j = 0
var arr = []
// debugger
while (i <= s.length && j <= t.length) {
if (s[i] == t[j]) {
i++
j++
if (j > t.length - 1) {
arr.push(i - t.length)
if (i >= s.length - t.length + 1) {
return arr
}
}
} else {
i = i - j + 1
j = 0
if (i >= s.length - 1) {
return arr
}
}
}
}
console.log(bf(str1, str2));
// indexOf 就是上面的语法糖
// console.log(str1.indexOf(str2));
也可以用递归进行改进算法
只不过在替代的时候需要处理一下,我随便写了个123进行了一个占位,如果数据量比较大的情况下,建议用symbol数据代替
// 可以用递归
let arrIndex = []
function index(str1,str2){
if(str1.indexOf(str2)!==-1){
arrIndex.push(str1.indexOf(str2))
str1 = str1.replace(str2,'123')
index(str1,str2)
}
return arrIndex
}
console.log(index(str1,str2));
欢迎大哥大姐们点个赞,评论区留言讨论!