首页 > 代码库 > KMP模板
KMP模板
1 #include<bits/stdc++.h> 2 #define N 1000000 3 using namespace std; 4 typedef long long ll; 5 char s[N],t[N]; 6 int next[N]; 7 int slen,tlen; 8 void getnext(){ 9 int i=0,j=-1;//注意写next数组时j为-1 10 next[0]=-1;11 while(i<tlen){12 if(j==-1||t[i]==t[j]) next[++i]=++j;13 else j=next[j];14 }15 }16 int kmp_index(){17 getnext();18 int i=0,j=0;19 while(i<slen&&j<tlen){20 if(j==-1||s[i]==t[j]) i++,j++;21 else j=next[j];22 }23 if(j==tlen) return i-j;24 else return -1;25 }
KMP模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。