数据结构--串 KMP匹配
来源:互联网 发布:mysql int字段累加 编辑:程序博客网 时间:2024/06/06 20:47
一、首先了解字符串匹配的基本原理:
http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html
二、求解next数组:
void makeNext(char p[],int next[]){ int q,k;//k是最大前缀长度,q是匹配串下标 next[0] = 0; for(q=1,k=0;q<strlen(p);q++){ //若果不相等,那么就从上一次个字符串最长前缀处查看,依次类推 while(k>0&&p[q]!=p[k]){ k = next[k-1]; } if(p[q]==p[k]){ k++; } next[q] = k; }}
以上程序转载自https://www.cnblogs.com/bdbk/p/5202482.html
解释:
例如匹配串:abcdabd。
q:匹配串的下标
p[q]:匹配串的字符
k:最大前缀长度
p[k]:最大前缀里的最后一个字符
以上程序:p[q]=’b’,p[k]=a,在p[q]还未指向最后时,p[q]不断后移,直至p[k]=a,p[q]=a时(即abcda),此时p[k]=p[q],因此k++,next[q]为next[4]=1;
然后p[q]指向b,p[k]为b,此时为abcdab,此时p[k]=p[q],因此k++,
next[5]=2;
然后p[q]指向d,p[k]为c,此时为abcdabd,p[q]不等于p[k]且k>0,因此k=next[k-1]=next[1]=0;,next[6]=k=0;
阅读全文
0 0
- 数据结构--串 KMP匹配
- 数据结构-串-KMP模式匹配算法
- 【数据结构】 串的模式匹配算法KMP
- 数据结构-模式匹配串算法(KMP)
- 数据结构 模式匹配(KMP)
- [数据结构] KMP字符串匹配
- [数据结构]字符串匹配KMP
- 数据结构-字符串匹配kmp
- 数据结构之kmp模式匹配
- 数据结构--KMP模式匹配算法
- 再看数据结构之KMP匹配
- 数据结构-字符串匹配kmp模板
- 数据结构- 串的模式匹配算法:BF和 KMP算法
- 数据结构之串的KMP模式匹配算法的实现
- Java数据结构-串及其应用-KMP模式匹配算法
- 数据结构(十三)串 KMP算法模式匹配
- 数据结构(关于串的KMP匹配算法及其改进)
- 数据结构- 串的模式匹配算法:BF和 KMP算法
- 设计模式
- POJ3258 River Hopscotch(二分法求最大化最小值)
- 设计模式-前摄器模式(Proactor)
- ios+Android老程序员的下场
- VLAN内的报文转发
- 数据结构--串 KMP匹配
- IDS验证(正整数并且是逗号分隔)
- 【Java】线程安全学习
- 探探左滑右滑, OKHttp请求网络数据实现
- 在web.xml中,<context-param>标签的作用是什么?
- 在multimap和multiset中查找元素
- le for current thread
- c语言小程序之三子棋
- Hive初级使用