一、暴力匹配
#include using namespace std;
#define maxlen 255
typedef structsstring;
//s為主串,t為子串
//暴力匹配
int index(sstring s,sstring t)else
}if(j>t.length)
return i-t.length;
else
return 0;
}
二、kmp演算法——next陣列
#include using namespace std;
#define maxlen 255
typedef structsstring;
//s為主串,t為子串
//kmp-next
int index_kmp(sstring s,sstring t,int next)
else
}if(j>t.length)
return i-t.length;
else
return 0;
}
三、nextval陣列的求法
//next->nextval
void get_nextval(sstring t,int nextval,int next)
}
然後把kmp演算法中的next陣列替換成nextval陣列即可,匹配演算法不變。 串 KMP模式匹配演算法(next陣列)
include include include void get next char t 100 int next int index kmp char s 100 char t 100 int pos int main void get next char t 100 int next else ...
KMP模式匹配演算法 next值求解
j 1 2 3 4 5 6 7 8 模式串 a b a a b c a c next j 0 1 1 2 2 3 1 2 各個位的解釋 1.前兩位必定為0和1。2.計算第三位的時候,看第二位b的next值,為1,則把b和1對應的a進行比較,不同,則第三位a的next的值為1,因為一直比到最前一位,都...
KMP模式匹配演算法求next陣列
j12 3456 78值a baab cacnext01 1223 12j是字串中的位置 從1開始計算 值是字串對應j位置的字母,next是next陣列中的值。下面是計算方法 1 首先next 1 0,next 2 1 這兩個是固定不變的 2 除了j 1和j 2時,求解next j 首先我們要獲取到...