kmp--看*算法

 1 string str;
 2 int next[N];// 核♥: next[k] 字符串前(k-1)个元素有next[k]个相等前后缀
 3             //  初始化 next[0]=-1; next[1]=0; 
 4 void get_next() {
 5     int k=-1;
 6     int i=0;
 7     next[0]=-1;
 8     int len=str.size();
 9     while (i<len) {
10         if (k==-1||str[k]==str[i]) next[++i]=++k;
11         else k=next[k];
12     }
13     return ;
14 }
15 int find (string s,string t) {
16     int n1=s.size();
17     int n2=t.size();
18     int i,j;
19     i=j=0;
20     while (i<n1&&j<n2) {
21         if (j==-1||s[i]==t[j]){
22             i++;
23             j++;
24         }
25         else  j=next[j];
26     }
27     if (j==n2) return i-n2;
28     else return -1;
29 }
抓住青春的尾巴。。。
原文地址:https://www.cnblogs.com/xidian-mao/p/8398248.html