字符串匹配算法之KMP算法
来源:互联网 发布:淘宝宝贝怎么复制淘宝 编辑:程序博客网 时间:2024/05/17 13:42
这个算法是字符串匹配算法中的佼佼者,仅利用O(lengthText + lengthPattern)的时间就完成了匹配任务。他快速的原因是无须回溯。这个算法最高深的也是最难懂的地方在于,两个串进行匹配,成功与否竟然只和模板串有关系,和目标串是没有关系的。当模板串在j位置匹配失败后,不用重新到0位置,下一次的位置应该再next[j]的位置。
下面是生成next数组的函数:
void GetNext(string Pattern, vector<int> &next){int j = 0;int k = -1;int lenP = Pattern.length();next.assign(8, -1);while (j < lenP){if ((k == -1) || (Pattern[j] == Pattern[k])){j++; k++;next[j] = k;} else{k = next[k];}}}下面是KMP算法:
int KMP(string Text, string Pattern, vector<int> &next, int TdefPos = 0){int posP = 0, posT = TdefPos;int lenP = Pattern.length();int lenT = Text.length();while ((posP < lenP) && (posT < lenT)){if ((posP == -1) || Pattern[posP] == Text[posT]){posP++; posT++;} else{posP = next[posP];}}if (posP < lenP){return -1;} else{return (lenT - lenP);}}
- 字符串匹配之KMP算法
- 字符串匹配算法之KMP
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配 之 KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之kmp算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP 算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配之KMP算法
- 字符串匹配算法之KMP
- HDOJ-1089 Calculate a + b
- JSP指令
- Delphi IDE扩展开发向导
- Fragment的使用与学习及使用过程中遇到的问题
- (C# 版描述)冒泡排序算法以及排序时间的测试 ---数据结构
- 字符串匹配算法之KMP算法
- php最全面试题
- 堆排序 博客
- 现实与理想
- 云服务提供商面临的用户疑问
- 如何破解Dreamweaver cs6?
- 数组中找出第k大的值
- linux服务器,svn认证失败,配置问题,防火墙等等
- python批量转换文件编码