javascript版的KMP算法
本想提高匹配效率,查资料写了个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;
- }
相关推荐
troysps 2020-05-30
Happyunlimited 2020-05-01
RememberMePlease 2020-04-30
shawsun 2020-03-23
yedaoxiaodi 2020-01-25
wulaxiaohei 2019-12-29
蜗牛慢爬的李成广 2020-01-11
yedaoxiaodi 2020-01-02
rein0 2019-12-14
darlingtangli 2019-11-17
seekerhit 2019-11-05
Happyunlimited 2019-11-04
ustbfym 2019-11-03
蜗牛慢爬的李成广 2019-11-03
HTML学堂码匠 2019-04-03