09天【代码随想录算法训练营34期】第四章 字符串part02(KMP)

KMP算法
解决字符串匹配问题

例子:
文本串aabaabaaf
模式串aabaaf
问:模式串是否在文本串中出现过?

1.暴力解法,ptr指向文本串index 0,遍历一遍发现不匹配,ptr再移向index 1,遍历……依次重复,直到ptr指向3
2.KMP算法,ptr指向文本串index 0,遍历到f发现不匹配,由于“aa”在字符串中index3和4时也出现过,因此ptr直接指向index 5

前缀表:
aabaaf的前缀指包括首字母不包括尾字母的组合: a, aa, aab, aaba, aabaa

最长相等前后缀指的是前缀和后缀相等的话,前缀/后缀长度为多少

模式串 最长相等前后缀
a 0
aa 1
aab 0
aaba 1
aabaa 2
aabaaf 0

如果从f开始不匹配(最长相等前后缀为0),那么就回到前缀后面的那个地方(也就是b),开始继续比对

posted @ 2024-03-28 14:19  MiraMira  阅读(12)  评论(0)    收藏  举报