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;
}