KMP算法
来源:互联网 发布:剑网3御姐捏脸数据 编辑:程序博客网 时间:2024/06/07 11:37
// KMP算法中一个很重要的就是next数组// next[j]表示子串满足P[0...k-1]=p[j-k...j-1]的最大的k// 根据定义next[0]=-1// 如果 p[j]==p[k],则由p[j-1]=k-1知next[j]=p[j-1]+1=k// 如果 p[j]!=p[k],则可以看成匹配失败的情况,k将转移到next[k]#include<cstring>void getNext(char *s,int *next){ // s是子串 int j=0,k=-1; int sLen=strlen(s)-1; next[0]=-1; while(j<sLen){ if(k==-1||s[j]==s[k]){ next[++j]=++k; }else{ k=next[k]; } } return;}int KMP(char *p,char *s){ // s是子串 int i=0,j=0; int pLen=strlen(p); int sLen=strlen(s); int *next=new int[sLen]; getNext(s,next); while(i<pLen&&j<sLen){ if(j==-1||p[i]==s[j]){ ++i;++j; }else{ j=next[j]; } } delete [] next; if(j==sLen) return i-j; return -1;}#include<iostream>using namespace std;int main(){ char p[]="To be Number One"; char s[]="Num"; cout<<KMP(p,s)<<endl; return 0;}
0 0
- KMP算法详解 【KMP】
- 【KMP】KMP算法模板
- KMP hihoCoder1015 KMP算法
- kmp算法
- KMP算法
- KMP算法
- KMP算法
- KMP算法
- KMP 算法
- kmp算法
- KMP算法
- kmp算法
- KMP算法
- KMP算法
- kmp算法
- kmp算法
- KMP算法
- KMP算法
- 加密解密算法,客户端C++加密,服务端PHP解密
- 【Android学习】Android完全退出应用程序
- Spring JdbcTemplate方法详解 .
- 自然月
- php发送安全邮件
- KMP算法
- C#软件开发三层架构的学习总结
- vs2010笔记
- 买不到的数目(蓝桥)
- 博客系统架构对比分析
- 文件管理习题练习一
- 何为s的两个数字
- ZBar与ZXing使用后感觉(中)
- Algorithm学习笔记 --- 幸运数(堆)