您的位置:首页 > 其它

今天写了一个KMP匹配算法,写好后发现用于拼音匹配时不合适,暂存一下吧

2012-12-11 09:44 441 查看
本想提高匹配效率,查资料写了个javascript版的KMP算法,写好后发现我需要的是拼音首字母匹配,不适用,暂存一下。

function match(mainstr,srhstr){//KPM匹配算法,用于快速匹配字符串
if(!mainstr||!srhstr)return -1;
var l_mainstr=mainstr.length;
var l_srhstr=srhstr.length;
//构建失配后特征数组
var k=0;
var vec=new Array();
vec[0]=-1;
for(i=1;i<l_srhstr;i++){
vec[i]=(srhstr[k]==srhstr[i])?vec[k]:k;
if(srhstr[i]==srhstr[k])k++;
else{k=(srhstr[i]==srhstr[0])?1:0;};
}
//查找子串
i=j=0;
while(i<l_mainstr){
if(mainstr[i]==srhstr[j]){j++;i++;}
else{
if(vec[j]==-1){j=0;i++;}
else{j=vec[j];}
}
//是否找到子串
if(j==l_srhstr){
return i-j;
}
}
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: