频道栏目
首页 > 程序开发 > web前端 > JavaScript > 正文
字符串匹配之KMP算法初探
2013-12-05 14:48:54         来源:rayyu1989的专栏  
收藏   我要投稿

因为javascript无需编译可直接在浏览器执行,所以使用javascript编写,其他环境也一样的 稍作修改即可,优化了下代码,可以从指定位置开始查找

\


<喎"/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+t7bA/dbQtcSx6cD6sunV0sv509DX1rf7tK48YnI+CjwvcD4KPHA+PGltZyBzcmM9"/uploadfile/Collfiles/20131205/20131205131352484.jpg" alt="\">

执行结果:

\


代码:

function search(src,find,start){
	/// 
	///	字符串匹配(KMP)
	/// 
	/// 原始字符串
	/// 要查找的字符串
	/// 起始位置(默认为0)
	/// 返回匹配字符串的位置,不存在则返回-1
	if (typeof start !== "number" || start <0) {
		start = 0;
	}
	var lenSrc = src.length;
	var lenFind = find.length;
	if(lenFind<=lenSrc){
		src = src.split("");
		find = find.split("");
		var temp;
		lenSrc-=lenFind-1;
		for (var i = start; i < lenSrc; i++) {
			//初始化临时temp
			temp = 0;
			for(var j=0;j0){
						if(charSrc==src[i + temp]){
							temp +=1;
						}
						else{
							temp=0;
						}
					}else{
						temp=0;
					}
				}else{
						if(temp>0){
							//console.log 便于查看结果
							console.log("start:" + i + " jump to " +  (i + j - temp) + " step " + (j - temp));
							//-1是因为 for循环下次会+1
							i+=(j - temp - 1);
						}
					break;
				}
			}
		}
	}
	return -1;
};



点击复制链接 与好友分享!回本站首页
相关TAG标签 字符串 算法
上一篇:利用ArrayList对Hashtable其进行排序
下一篇:Jsoup初接触-发一个Jsoup抓取图片的程序
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站