\quad
\quad
\quad
\quad
\quad
\quad
\quad
\quad
\quad
鄙人所写
int Indexps(SString* a, SString* b) //朴素模式匹配算法 { int i = 1, j = 1; for (int k = 0; i < a->length - b->length + 1; k++) { while(j<=b->length) { if (a->ch[i] != b->ch[j]) { break; } i++; j++; } if (j > b->length) { return i - b->length; } i = i - j + 2; j = 1; if (i >= a->length - a->length + 2) { return 0; } } }
优化
\quad
\quad
\quad
\quad
\quad
\quad
\quad
第二种情况
根据上面的经验,i不变,变的是j,而j是未知, 我们不妨先把j指向0
\quad
\quad
先不管next数组如何实现, 会手动算就行
\quad
\quad
\quad
\quad
使用next数组进行模式匹配
练习题
\quad
\quad
\quad
\quad
\quad
\quad
\quad
\quad
\quad
\quad
不是所有的next数组的值都可以被优化
\quad
\quad
\quad