首页 > 代码库 > BF算法和KMP算法(javascript版本)

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

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

 

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