本想提高匹配效率,查资料写了个javascript版的KMP算法,写好后发现我需要的是拼音首字母匹配,不适用,暂存一下。
- function match(mainstr,srhstr){
- 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;
- }
分享到:
相关推荐
kmp算法 基于JavaScript 实现的KMP 算法
主要介绍了JavaScript中数据结构与算法(五):经典KMP算法,本文详解了KMP算法的方方面在,需要的朋友可以参考下
本篇文章介绍了,基于KMP算法JavaScript的实现方法分析。需要的朋友参考下
const Kmp = require ( 'kmps' ) ; // import this module // working with TypedArray { const pattern = Uint32Array . from ( [ 0xFFFF , 0x3000 ] ) ; const corpus = Uint32Array . from ( [ 0xFFFF , 0xFFFF...
KMP, RabinKarp : 路径压缩、按秩合并。 : 质数测试、筛选等。 : 阶乘、模阶乘、二项式系数、帕斯卡三角。 : 欧几里得公约数,扩展欧几里得,模拟元。 : create2DArray, create3DArray, greater, less, valid2D, ...
串是由零个或多个字符组成的有限序列,又叫做字符串 串的逻辑结构和线性表很相似的,...这里主要讨论下字符串模式匹配的几种经典的算法:BF、BM、KMP BF(Brute Force)算法 Brute-Force算法的基本思想: 从目标串s 的
现在我们可以看到时间和空间复杂度都与KMP算法相同,但是这种算法更易于理解。安装npm install z-algorithm --saveoryarn install z-algorithm运行测试你需要安装npm testoryarn test用法import z from 'z-...
公里数Javascript 中的字符串搜索算法。安装npm install kmpbower install kmp用法 var kmp = require ( 'kmp' ) ;console . log ( kmp ( 'she sells seashells by the seashore' , 'shell' ) ) ; // 13console . ...
Challenge_problems 回购,用于实现各种数据结构和算法以及各种问题的解决方案。 此仓库正在开发中....
实现KMP算法 问题 30 连接所有单词的子串 提高效率,现在使用 DFS 问题 35 搜索插入位置 搞清楚原理 问题 44 通配符匹配 实施自下而上的动态规划,目前超过 54%/20% 问题 45 跳跃游戏 II 实施,目前超过 14%/36% ...
最优算法搜索KMP算法 30 31 :thumbs_up: 32 :thumbs_up: 33 34 35 36 37 38 39 40 41 :thumbs_up: 42 :thumbs_up: 43 44 :thumbs_up: 45 :thumbs_up: 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 ...