#include#include#include#includeusing namespace std;
string a,b;//a為被搜尋字串,b為指定字串。
int nexte[5000];
int next[5001];
void makenext()
//求出前i個字元子串字首與字尾最長的序列數。nextval的求法
next[0] = -1;
for(int i = 1; i < b.length() ; i ++)
next[i] = nexte[i-1];
//為了得到真正的next序列,將nextval右移動一位,然後將陣列第乙個元素改為-1.
}int kmp()//kmp演算法,尋找是否存在指定字串,並返回陣列下標。
else
j = next[j];
}if(j == lenb)
return i-j;
else
return -1;
}int main(void)
kmp字串匹配
首先要對模式串進行預處理。預處理過程就是計算出指定位置的字首和字尾的最大相同的長度 啊啊啊啊。估計只有我乙個人能看懂 這個文章說得很清楚 比如說 a a a c b c a a a 0 1 2 0 0 0 1 2 3 void getnext int next,char par 20 int n 翻...
字串匹配 KMP
參考 從頭到尾徹底理解kmp 在字串 str 中 匹配模式串 pattern 1.計算模式串的 next 陣列 2.在字串中匹配模式串 當乙個字元匹配時,str i pattern k 繼續匹配下乙個字元 當當前字元不匹配時,根據 next 陣列移動模式字串,k next k next 陣列 描述模...
字串KMP小結
一 返回模式串在主串的下標bf與kmp與kmp1 二 返回模式串在主串中出現的次數 如圖 include include includeusing namespace std define maxsize 100 int next maxsize int nextval maxsize int n ...