KMP算法(字符串匹配算法)

 1 void GetNext(char t[] , int next[]){
 2     int i = 0;
 3     int k = -1;
 4     next[0] = -1;
 5     while(t[i] != '\0'){
 6         if(k == -1 || t[i] == t[k]){
 7             next[++i] = ++k;
 8         }
 9         else k =next[k];
10     }
11 }
12 int KMP(char s[] , char t[]){
13     int i = 0;
14     int j = 0;
15     int next[80];
16     GetNext(t , next);
17     while(s[i] != '\0' && t[j] !='\0'){
18         if(s[i] == t[j] || j == -1){
19             ++i;
20             ++j;
21         }
22         else{
23             j = next[j];
24            
25         }
26     }
27     if(t[j] =='\0') reuturn i - strlen(t);
28     else reuturn -1;
29 }

蛮力法求Next数组:

 

posted @ 2019-04-29 23:23  unique_ptr  阅读(86)  评论(0编辑  收藏  举报