基于KMP算法的Javascript实现方法分析 爱问知识人
算法的核心部分是部分匹配表和回归算法,部分匹配表的实现如下:
复制代码代码如下所示:
功能kmpgetstrpartmatchvalue(STR){
var前缀{ };
var后缀= };
无功partmatch = { };
对于(var i = 0,J = str.length;i< j;i++){
VaR纽世达= str.substring(0,i + 1);
如果(newstr.length = = 1){
我partmatch { } = 0;
{ { { }
对于(var = 0;k< i;K + +){
前缀{ } = newstr.slice K(0,k + 1);
后缀{ } = newstr.slice(K·K-1);
如果(前缀后缀=后缀= { }){
partmatch { } { } =前缀长度K;
}
}
如果(!partmatch {我}){
我partmatch { } = 0;
}
}
}
prefix.length = 0;
suffix.length = 0;
返回partmatch;
}
演示
var t =abcdabd ;
console.log(kmpgetstrpartmatchvalue(t));
/ /输出:{ 0,0,0,0,1,2,0 }
回滚算法的实现如下:
复制代码代码如下所示:
函数KMP(sourcestr,targetstr){
无功partmatchvalue = kmpgetstrpartmatchvalue(targetstr);
var = false;
对于(var i = 0,J = sourcestr.length;i< j;i++){
对于(var m = 0,n = targetstr.length;m<n;M + +){
如果(str.charat(M)= sourcestr.charat(I)){
如果(M = = targetstr。length-1){
结果=真;
打破;
{人}
++;
}
{人}
如果(m>0 partmatchvalue { M-1 } >0){
M = partmatchvalue { } 1 m-1;
{ { { }
打破;
}
}
}
如果(结果){
打破;
}
}
结果返回;
}
var s =英国广播公司段abcdabcdabde ;
var t =abcdabd ;
console.log(KMP(s,t));
输出:真的
全部
网址:基于KMP算法的Javascript实现方法分析 爱问知识人 http://c.mxgxt.com/news/view/1027239
相关内容
基于知识图谱的内容推荐算法研究与实现影片分析方法(一)电影基础知识
基于Python的社交媒体评论数据挖掘,使用LDA主题分析、文本聚类算法、情感分析实现
影视作品分析的基本方法
基于三维眼球模型计算视线方向的人脸识别活体检测方法与流程
八字婚姻的关系与分析方法(算卦街真人在线算命)
算命算姻缘的最好方法是什么 算命算姻缘最快的方法
工程建设投资估算指标的编制方法有哪些呢? 爱问知识人
数据分析的方法论
基于多源数据融合的船舶位置识别方法.pdf