KMP-基础
来源:互联网 发布:欧文总决赛数据统计 编辑:程序博客网 时间:2024/06/09 22:09
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。
关键是求 next();数组。
下标012345chabacabnext();001012KMP-模板:
#include<cstdio>#include<cstring>#define M 1000010int p[M]; //相当于next()char ch[M],str[M];int len,lens,cnt;void getp() //模板 {int i,j;i=0;j=-1;p[i]=j;while(i<len){if(j == -1 || ch[i] == ch[j]){i++,j++;p[i]=j;}elsej=p[j];}}void kmp(){getp();int i,j;i=0;j=0;while(i<lens){if(j == -1 || str[i] == ch[j]){i++,j++;if(j == len)cnt++;}elsej=p[j];}}//查找母串中有多少 标准模式串int main(){while(scanf("%s%s",ch,str)!=EOF) //ch为标准模式串,str为母串 {len=strlen(ch);lens=strlen(str);cnt=0;kmp();printf("%d\n",cnt);}return 0;}
0 0
- KMP-基础
- KMP基础
- KMP基础
- 基础练习KMP算法
- [POJ3461] Oulipo[KMP基础]
- 基础KMP两道
- 基础算法 KMP
- 基础算法 扩展KMP
- POJ3461 Oulipo KMP基础
- kmp 基础详解
- 【数据结构基础】KMP算法
- KMP算法(2)-KMP算法的基础
- 计蒜客 B kmp基础 kmp模板
- poj 1961 Period kmp基础
- poj 3461 Oulipo kmp基础
- HDU 1711 kmp基础题目
- 字符串处理基础算法-KMP
- HDOJ Oulipo (基础KMP)
- UVALive - 3977 Summits (BFS染色)
- YUV420p格式
- MFC 双击控件 提示重载函数已存在
- Ubuntu 10.04建立源码树实现最简单的驱动模块
- Majority Element II
- KMP-基础
- 线段树之HDU1698 Just a Hook
- 【定制】在settings中的PreferenceScreen中添加一个图片
- 死了都要try------哪些奋斗的程序猿
- Tunnel Warfare
- 无法定位序数 xxxx 与动态链接库 avcodec-55.dll上
- Android 高仿微信实时聊天 基于百度云推送
- MYSQL使用UTF8中文乱码终极解决办法
- NSThread