字符串匹配之KMP算法初探
来源:互联网 发布:适合数据分析的电脑 编辑:程序博客网 时间:2024/06/07 20:56
按惯例AD下搜索易:http://www.i-ssy.com/
因为javascript无需编译可直接在浏览器执行,所以使用javascript编写,其他环境也一样的 稍作修改即可,优化了下代码,可以从指定位置开始查找
范例中的遍历查找所有字符串
执行结果:
代码:
function search(src,find,start){/// <summary>///字符串匹配(KMP)/// </summary>/// <param name="src" type="String">原始字符串</param>/// <param name="find" type="String">要查找的字符串</param>/// <param name="start" type="Number">起始位置(默认为0)</param>/// <returns type="Number">返回匹配字符串的位置,不存在则返回-1</returns>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++) {//初始化临时temptemp = 0;for(var j=0;j<lenFind;j++){var charSrc = src[i+j];var charFind = find[j];if(charSrc===charFind){if(j==lenFind-1){return i;}else if(j>0){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循环下次会+1i+=(j - temp - 1);}break;}}}}return -1;};
- 字符串匹配之KMP算法初探
- 字符串匹配KMP算法初探
- 字符串匹配之KMP算法
- 字符串匹配算法之KMP
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配 之 KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之kmp算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP 算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 从拼图游戏开始(三)_可行解的讨论
- vc6静态库的生成和调用
- why GNU grep is fast
- Java与XML(二):使用Dom4j 操作 XML 文件
- 快速排序(Quicktsort)之Java实现
- 字符串匹配之KMP算法初探
- ZeroMQ(java)中组件间数据传输(Pipe的实现)
- 使用Jquery EasyUi常见问题解决方案
- 详细的DOS命令说明
- ubuntu10.04下安装 kdevelop
- 一个程序员的时间管理
- Ext 鼠标悬停grid的一行显示该行信息
- 开源代码覆盖率工具GCOV — Lcov生成的Info文件格式分析
- Android中全屏或者取消标题栏