KMP与扩展KMP
来源:互联网 发布:echo linux 写入文件 编辑:程序博客网 时间:2024/04/30 15:51
KMP
next数组 表示:
next[i] -> T[1…i-1] 前缀 与 T[1…i-1] 后缀相同的最大长度
next[next[i]] 次大长度
扩展KMP
next数组 表示:
next[i]-> T[i….m] 与 T的最大公共前缀长度
extend[i] -> S[i….m] 与 T的最大公共前缀长度
next是T与T自身得到的特殊的extend
模板:
int next[MAXN];int extend[MAXN];void EKMP(char s[],char t[])//s[]为主串,t[]为模式串{ int i,j,p,l; int len=strlen(t); int len1=strlen(s); memset(next,0,sizeof(next)); memset(extend,0,sizeof(extend)); next[0]=len; j=0; while(j+1<len&&t[j]==t[1+j])j++; next[1]=j; int a=1; for(int i=2;i<len;i++) { p=next[a]+a-1; l=next[i-a]; if(i+l<p+1)next[i]=l; else { j=max(0,p-i+1); while(i+j<len&&t[i+j]==t[0+j])j++; next[i]=j; a=i; } } j=0; while(j<len1&&j<len&&s[j]==t[j])j++; extend[0]=j; a=0; for(i=1;i<len1;i++) { p=extend[a]+a-1; l=next[i-a]; if(l+i<p+1)next[i]=l; else { j=max(0,p-i+1); while(i+j<len1&&j<len&&s[i+j]==t[j])j++; extend[i]=j; a=i; } }}
参考:ppt
0 0
- kmp与kmp扩展
- KMP与扩展KMP
- KMP与扩展KMP
- kmp与扩展kmp的模版
- KMP与扩展KMP必须得过!!!
- KMP和扩展KMP
- KMP和扩展KMP
- 扩展KMP+KMP+hdu4333
- KMP和扩展KMP
- KMP和扩展KMP
- KMP/扩展KMP
- KMP 扩展KMP
- KMP,EXKMP 扩展KMP
- 【KMP/KMP扩展】目录
- KMP,扩展KMP模板
- Poj1699 扩展kmp与tsp
- 扩展KMP
- 扩展KMP
- 黑马程序员-import和include的区别 以及 @class 与 #import 的区别
- BMP图片读写接口函数
- hdu 4781 Assignment For Princess
- SuperRecyclerView——使RecyclerView更加容易使用的Android类库
- 7-9工作日志
- KMP与扩展KMP
- 一致性hash算法-php-redis版本
- 集合(3) Map集合,工具类
- C++这个名字
- 设计模式学习--桥接模式
- 2015070904 - 阅读后的书籍有着落了
- leetCode 40.Combination Sum II(组合总和II) 解题思路和方法
- 1985年公布的C++语言1.0版的内容中又添加了一些重要特征
- API其他函数 ,system date,..