基于JavaScript的字符串暴力匹配算法(BF算法)

摘要

现在所有标准库中类似字符串匹配的函数(如: Java-indexof)都是采用的我们今天要将的BF(Brute Force)方法.
    好,下面首先正式把问题摆出来,给定两个串S="s0, s1, s2, ...., sn", T="t0, t1, t2,..., tn", 在主串S中查找字串T  的过程称为字符串匹配问题,T称为模式串。
BF(Brute Force)算法,下面我们来看一下伪码:

二 BF伪码算法思想

1. 首先设定 S 和 T 的起始比较下标 i 和 j;
2. 循环直到 i+m>n 或者T中的字符都比较完(j==m)
2.1 如果S[i]==T[j], 继续比较S和T的下一个字符,否则
2.2 将 i 和 j 回溯,准备下一轮比较
3. 如果T中的字符都比较完(j==m),则返回比较的起始下标
否则返回-1,表示匹配失败

三 具体实现

第一步:假设有一长串字符串

函数

第二步:普通版BF

算法

第三步:优化后的BF

javascript

第四步:结果展示函数

算法

四 效果

第一步:假如我们把搜索的字符串改为 :
 var searchStr = "A break up";
第二步:效果显示

javascript

第四步:CF优缺点
 1.BF算法的优点就是简单可靠,这跟现实中的东西一样,越简单的东西越是信得过的,可见简单就是好,而复杂的东西限制要求多。
  2. BF算法的确定就是一遇到比较失败的时候就需要回退到前面重新开始比较,之前比较匹配过的信息完全用不上.
您的回应...

相关话题

查看全部

也许你感兴趣

换一批

热门标签

更多