字符串匹配算法SMA 总结之三:KMP算法
2010-06-10 15:10
465 查看
//Knuth-Morris-Pratt algorithm //preprocessing //next array void get_next(int*next,const char*pattern,const int pattern_len) { int i=0; int j=-1; next[0]=-1; while(i<pattern_len){ if (j==-1||pattern[i]==pattern[j]){ i++; j++; next[i]=j; }else{ j=next[j]; } } } int kmp(const char* text,const int text_len,const char* pattern,const int pattern_len) { int* next=new int[pattern_len]; //preprocessing get_next(next,pattern,pattern_len); //searching int i=0; int j=0; while (i<text_len&&j<pattern_len){ if (j==0||text[i]==pattern[j]){ i++; j++; }else{ j=next[j]; } } delete[] next; if (j>=pattern_len){ return i-j; }else{ return -1; } }
相关文章推荐
- 字符串匹配算法SMA 总结之一:Brute force
- 字符串匹配算法SMA 总结之四:自动机算法
- 字符串匹配算法SMA 总结之二:KR ,Karp Rabin 算法
- 字符串匹配算法总结
- 字符串匹配算法总结
- 字符串匹配算法总结
- 字符串匹配的几种算法总结(KMP、等)
- 字符串匹配算法总结
- 字符串匹配算法——KMP算法
- 各种字符串匹配算法总结
- 字符串匹配算法--KMP算法
- KMP字符串匹配算法学习总结
- 最长字符串匹配算法(KMP算法)
- 【数据结构与算法】字符串匹配之BF&KMP算法
- 字符串匹配算法总结
- 数据结构之字符串匹配算法(BF算法和KMP算法)
- 字符串匹配算法总结
- 字符串匹配算法 -- 暴力破解法(朴素法),RK算法,KMP算法
- 字符串匹配的Boyer-Moore算法 作者: 阮一峰 日期: 2013年5月 3日 上一篇文章,我介绍了KMP算法。 但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ct
- LeetCode Implement strStr()(朴素的字符串匹配,RK算法,KMP算法)