KMP模板(KMP)
放一个模板在这里搞事情。。。。。。
学KMP的话找SYCstudio吧(博客链接)
代码(多组数据,\(O(n)\)求一个串是否在另一个串里出现过)
#include<cstdio>
#define R register
const int N=1e5+9;
char s[N],t[N];
int ne[N];
int main(){
ne[0]=-1;
R int i,j;
while(~scanf("%s%s",s,t)){
for(i=1;t[i];++i){
for(j=ne[i-1];~j&&t[i]!=t[j+1];j=ne[j]);
ne[i]=t[i]==t[j+1]?j+1:-1;
}
for(j=-1,i=0;s[i]&&t[j+1];++i){
for(;~j&&s[i]!=t[j+1];j=ne[j]);
j+=s[i]==t[j+1];
}
puts(t[j+1]?"NO":"YES");
}
return 0;
}