首页 > 代码库 > kmp算法--求字符串子串--《数据结构》严蔚敏
kmp算法--求字符串子串--《数据结构》严蔚敏
// exam1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; void get_next(int* &next,char* s) { int j=0; int i=1; int len=strlen(s); next=(int*)malloc(len*sizeof(int)); memset(next,0,len*sizeof(int)); while(s[i]!='\0') { if(s[j]==s[i]) { i++; j++; if(s[i]!=s[j]) { next[i]=j; } else { next[i]=next[j]; } } else { if(j==0) { i++; } j=next[j]; } } } int kmp(int* next,char* s,char* m) { int i=0,j=0; while(s[i]!='\0') { if(m[j]=='\0') { break; } if(s[i]==m[j]) { i++; j++; } else { if(j==0) { i++; } j=next[j]; } } return i-strlen(m); } int main(void) { int len,*next; char *s="acabaabaabcacaabc"; char *m="abaabcac"; len=strlen(m); get_next(next,m); int loc=kmp(next,s,m); /*for(int i=0;i<len;i++) { cout<<next[i]<<endl; }*/ cout<<loc<<endl; system("pause"); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。