![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
KMP,BF,BM,RK
文章平均质量分 62
字符串搜索
Strive_LiJiaLe
这个作者很懒,什么都没留下…
展开
-
KMP原理
文章目录概念KMP原理通过交集进行移动PMT数组模式串的交集next数组代码 概念 前缀:字符串A和B,A=B+S,S非空,则B为A的前缀。 后缀:A=S+B,S非空,则B为A的后缀。 PMT:前缀集合和后缀集合的交集中,最长元素的长度 部分匹配表:PMT值集合,字符串所有前缀的PMT值 prefix:每一个下标位置对应一个PMT值,组成的数组 next:prefix向右移一个下标位置,组成next数组 下面的图看不懂不要紧,看完原理就懂了! 例如: 下标5:ABCABC 前缀集合:A,AB,ABC,AB原创 2021-04-28 19:21:28 · 1491 阅读 · 5 评论 -
BM
坏字符规则 主串与模式串对比,从模式串右端开始,如图,A与D失配,往前找,直到找到模式串的开头才相同,那么直接将模式串后移:与模式串的A对齐。减少两次移动。 好后缀 A与D失配,但BC相同,就称后缀BC为好后缀。 接着从D向前找BC好后缀,发现:找到了 将其对齐。减少两次移动。 总结 两种规则综合实验,那种移动的位数多,使用哪种。最坏的情况下,就会退化为BF暴力算法 时间复杂度:O(n/m) 最坏:O(m*n) ...原创 2021-04-28 14:00:04 · 86 阅读 · 0 评论