kmp
来源:互联网 发布:linux expr 编辑:程序博客网 时间:2024/05/16 14:41
假设要在字符串t中寻找s,那么next[i]=j 表示,如果s[i]与t[k]匹配失败,下次就让s[j]跟t[k]匹配。也就是说,其实在s中,s[i-1]==s[j-1], s[i-2]==s[j-2]。。。
这样,在计算next时,先找到与s[i]相等的那个位置j。然后,i++,j++,让next[i]=j。
void computeNext(char* s){ int i=0, j=-1; next[0]=-1; int len = strlen(s); while(i<len) { while(j>=0 && s[i]!=s[j]) j=next[j]; i++; j++; next[i]=j; }}
在匹配时,
void kmp(char* s, char* t){ computeNext(s); int len=strlen(t); int end=strlen(s); int i=0, j=0; while(i<len) { while(j>=0&&t[i]!=s[j]) j=next[j]; i++; j++; if(j==end) { output(t, i-end, i); j=next[j]; } }}
感觉这样思考,比算法导论上要简单些。
- KMP
- KMP
- KMP
- KMP
- KMP
- KMP
- kmp
- kmp
- KMP
- kmp
- KMP
- KMP
- KMP
- kmp
- KMP
- KMP
- kmp
- KMP
- POJ_3358 Period of an Infinite Binary Expansion
- java 根据时区算出这个时区的时间
- 多线程
- python自定义解析简单xml格式文件
- <ubuntu 无线网络已禁用 wireless is disabled>解决办法
- kmp
- java.lang.NoClassDefFoundError: org/apache/commons/dbutils/DbUtils
- spring 依赖性注入 (spring 依赖性注入(xml配置文件,填写的时候要写全,不是包,而是到类)
- 《iPhone与iPad开发实战—iOS经典应用剖析》连载一
- TCHAR char CString 数据类型转换
- 十进制二进制互相转换
- python 常用类库!
- 最佳程序设计探索之一:需求驱动编写自顶向下的代码
- 手机ram和rom的区别