kmp返回头位置的模板
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; char s[50][100]; char t[10000],name[1000]; int next[50005]; void getnext(char s[])//把副串弄进来,next { int i=0,j=-1; next[0]=-1; int len=strlen(s); while(i<len) { if(s[i]==s[j]||j==-1) { i++; j++; next[i]=j; } else j=next[j]; } } int kmp(char s[],char t[]) //注意:s串为副串,t串为主串 { int num=0,i=0,j=0; int len=strlen(s); int lenn=strlen(t); while(i<lenn&&j<len) { if(j==-1||s[j]==t[i]) { i++; j++; } else j=next[j]; } //printf("%d %d\n",i,j); if(j==len) return i-j; else return 100000; }
朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。