朴素模式匹配算法
主串长度为 n
模式串长度为 m
将主串中所有长度为m的子串依次与模式串对比(最多对比 n-m+1 个字串) ,直到找到一个完全匹配的子串,或所有的子串都不匹配为止。
最坏时间复杂度为 O(nm)
KMP算法next数组求解
- next[1]都无脑写 0
- next[2]都无脑写 1
- 其他next:在不匹配的位置前,划一根美丽的分界线
- 模式串一步一步往后退,直到分界线之前“能对上”,或模式串完全跨过分界线为止。此时j指向哪儿,next数组值就是多少
- 最坏时间复杂度 O(m+n)
- 其中求next数组时间复杂度是O(m)
- 模式匹配过程的最坏时间复杂度为O(n)
if (j==0) {
j++;
i++;
}