KMP算法实现
来源:互联网 发布:智能电视怎样安装网络 编辑:程序博客网 时间:2024/05/17 07:06
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
void get_next(string T,int *next);
int Index_KMP(string s,string T,int pos);
void get_nextval(string T,int *nextval);
void get_next(string T,int *next)
{
int i=1;
int j;
j=0;
next[1]=0;
while (i<T.length())
{
if(j==0 ||T[i]==T[j])
{
++i;
++j;
next[i]=j;
}
else
j=next[j];
}
}
int Index_KMP(string s,string T,int pos)
{
int i=pos;
int j=1;
int next[255];
get_nextval(T,next);
int cout=T.length();
while(i<s.length()&&j<cout)
{
if(j==0||s[i]==T[j])
{
++i;
++j;
}
else
{
j=next[j];
}
}
if(j>T.length()-1)
return i-T.length()+1;
else
return 0;
}
void get_nextval(string T,int *nextval) //改进算法
{
int i=1;
int j;
j=0;
nextval[1]=0;
while (i<T.length())
{
if(j==0 ||T[i]==T[j])
{
++i;
++j;
if(T[i]!=T[j])
{
nextval[i]=j;
}
else
{
nextval[i]=nextval[j];
}
}
else
j=nextval[j];
}
}
int _tmain(int argc, _TCHAR* argv[])
{
string str="aaaabcde";
string str1 ="aaaaax";
int k=str.length();
int state=Index_KMP(str,str1,1);
cout<<k<<endl;
cout<<state<<endl;
while(1);
return 0;
}
#include <iostream>
#include <string>
using namespace std;
void get_next(string T,int *next);
int Index_KMP(string s,string T,int pos);
void get_nextval(string T,int *nextval);
void get_next(string T,int *next)
{
int i=1;
int j;
j=0;
next[1]=0;
while (i<T.length())
{
if(j==0 ||T[i]==T[j])
{
++i;
++j;
next[i]=j;
}
else
j=next[j];
}
}
int Index_KMP(string s,string T,int pos)
{
int i=pos;
int j=1;
int next[255];
get_nextval(T,next);
int cout=T.length();
while(i<s.length()&&j<cout)
{
if(j==0||s[i]==T[j])
{
++i;
++j;
}
else
{
j=next[j];
}
}
if(j>T.length()-1)
return i-T.length()+1;
else
return 0;
}
void get_nextval(string T,int *nextval) //改进算法
{
int i=1;
int j;
j=0;
nextval[1]=0;
while (i<T.length())
{
if(j==0 ||T[i]==T[j])
{
++i;
++j;
if(T[i]!=T[j])
{
nextval[i]=j;
}
else
{
nextval[i]=nextval[j];
}
}
else
j=nextval[j];
}
}
int _tmain(int argc, _TCHAR* argv[])
{
string str="aaaabcde";
string str1 ="aaaaax";
int k=str.length();
int state=Index_KMP(str,str1,1);
cout<<k<<endl;
cout<<state<<endl;
while(1);
return 0;
}
- KMP算法及改进KMP算法实现
- [数据结构]KMP算法实现
- KMP算法的实现
- KMP算法实现
- KMP算法实现
- KMP 算法实现
- kmp算法实现
- KMP算法实现
- KMP算法和实现
- KMP算法实现
- KMP算法及实现
- KMP算法的实现
- KMP算法实现
- java实现kmp算法
- KMP算法C++实现
- KMP算法c++实现
- KMP算法java实现
- kmp算法实现
- android OTA差分包的生成方法
- SWAT—Samba WEB管理工具
- asp.net开源CMS推荐
- experiment : 使windbg反汇编窗口代码语法高亮
- (四)用telnet远程配置交换机----即任务二中--------1. 交换机的配置/VLAN
- KMP算法实现
- NDK导入Eclipse CDT出现jni.h找不到解决方法
- 一步步构建大型网站架构
- c++中类的大小和虚函数调用顺序
- codeforces 301 A Yaroslav and Sequence
- QT 定时器
- java从程序员到CTO
- oracle 建用户
- Android recovery 下使用 updater-script 自制升级包