您的位置:首页 > Web前端 > JavaScript

BF算法和KMP算法(javascript版本)

2014-08-26 11:20 302 查看
var str="abcbababcbababcbababcabcbaba";//主串
var ts="bcabcbaba";//子串
function BF(s,t){//BF算法
var i=0,j=0,v=-1;
while(i<s.length&&j<t.length){
if(s[i]==t[j]){//相等就移动指针
i++;
j++;
}
else{//指针归零
i=i-j+1;
j=0;
}
}
if(j==t.length){//判断是否
v=i-j;
}else{
v=-1;
}
return v;
}
//KMP
function GetNext(t,arr){
var k=-1,j=0;
arr[0]=-1;
while(j<t.length-1){
if(k==-1||t[j]==t[k]){
j++;
k++;
arr[j]=k;
}else{
k=arr[k];
}
}
}
function Kmp(s,t){
var pattern=new Array(t.length);
var j=0,i=0,v=0;
GetNext(t,pattern);
while(i<s.length&&j<t.length){
if(j==-1||s[i]==t[j]){
i++;
j++;
}
else{
j=pattern[j];
}
}
if(j>=t.length){
v=i-t.length;
}
else{
v=-1;
}
return v;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: