模式匹配-KMP算法
来源:互联网 发布:冰与火之歌淘宝 编辑:程序博客网 时间:2024/04/29 03:11
正文t, 模式p, 失败链接flink
算法概述:
在匹配过程中,一旦出现p[j] != t[i] ;
如果存在一个整数k (k < j),
使得在模式p中开头的k个字符(p[0], p[1], ..., p[k-1])依次与p[j]前面k个字符(p[j-k], p[j-k+1],...p[j-1])相同,
那么只要从模式p中的p[k]开始与正文t的t[i]开始继续进行比较,
就可以省去前面k词比较。
如果满足上面条件的k有多个,取最大k。
?
void faillink(char* p, int isize, int* flink)
{
int j, k;
flink[0] = -1;
j = 1;
while (j < isize)
{
k = flink[j - 1];
while (k != -1 && p[k] != p[j-1])
k = flink[k];
flink[j++] = k + 1;
}
}
int kmp_match(char* t, int tsize, char* p, int psize, int* flink)
{
int tidx, pidx;
tidx = 0;
pidx = 0;
while (tidx < tsize)
{
while (pidx != -1 && p[pidx] != t[tidx])
pidx = flink[pidx];
if (pidx == psize - 1) return (tidx - psize + 1);
tidx ++;
pidx ++;
}
return -1;
}
- 模式匹配---KMP算法
- 模式匹配 KMP算法
- 模式匹配-KMP算法
- KMP模式匹配算法
- KMP模式匹配算法
- KMP模式匹配算法
- 模式匹配kmp算法
- 模式匹配算法kmp
- KMP模式匹配算法
- KMP模式匹配算法
- KMP模式匹配算法
- KMP模式匹配算法
- KMP模式匹配算法
- KMP模式匹配算法
- KMP模式匹配算法
- KMP模式匹配算法
- KMP算法模式匹配
- KMP 模式匹配算法
- 测试部门经理的工作感受(一)[原]
- i am not so far away from home
- css
- 一些符号及颜色的英语写法总结
- 关于接电话的补充
- 模式匹配-KMP算法
- 案例 合资公司
- NHibernate体系结构
- asp.net 定制简单的错误处理页面
- 【~!~】儿子的06-07年度标准答案:1()白云,3()鱼,5()小鸡,2()伙伴
- 什么是3G
- java新手必读
- 在asp.net页面中的一些有关编码的问题
- Ajax程序设计入门