1)朴素模式匹配算法(暴力算法)
算法思想:逐个比对字符
最好时间复杂度:O(n(即每次比对都在第一个字符处失败
2)KMP算法
算法思想:算出PM表然后依据此表移动模式串和模式串指针的位置
需注意的点:
②next数组计算看王道串的课后习题
④next[j]的含义:在发生失配时,子串指针跳到子串的next[j]位置重新与主串当前位置进行比较(主串指针回溯-KMP优点)
求next数组:O(m
:
-
KMP算法进一步优化:如果出现了
(P为子串时,用next数组中符合此条件的从左至右把前面的字符的next值赋给后一个