KPM算法-字符匹配
字符匹配模式-KMP算法
j直接跳到了2的位置,因为在之前的都相同。
那么就需要求如果不等了之后,j需要回跳的位置next[j]
如果tk”与tj相等,则next [j+1]=k”+1
如果tk‘与tj不相等,则继续向前找,直到找到next[0]=-1为止
注意:t是从0下标开始
1 void getnext(string t) 2 3 { 4 5 int j=0,k=-1; 6 7 int len=t.size(); 8 9 next[0]=-1; 10 11 wihle(j<len) 12 13 { 14 15 if(k==-1||t[j]==t[k]) 16 17 next[++j]==++k; 18 19 else 20 21 k=next[k]; 22 23 } 24 25 }