数据结构
文章平均质量分 84
鹰王eagleking
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构-BM算法详解
在串匹配中,靠后的字符的失配能更多地排除待匹配的字符,也就是说模式串中越靠后的字符对算法的优化作用更大。因此BM算法将匹配的方向颠倒过来,从右向左进行匹配,即在每一趟比对中都从末字符开始比对。以下设文本串为T[],长度为n,模式串为P[],长度为m。坏字符策略(BC策略)某趟扫描中一旦发现T[i+j] == X!= Y ==P[j],则模式串P右移,并启动新的一轮比对。如上图,其中Y称作坏字符。此次失配后,若还想在文本串T的X附近产生一次匹配,则需要在模式串P中找到另外一个X,并将模式串P右移,使之与原创 2021-10-20 11:22:23 · 2241 阅读 · 1 评论 -
数据结构-KMP算法详解
设文本串为T[],欲匹配模式串为P[],文本串长度为n,模式串长度为m,则匹配过程中一次失配情况如下:此时原文本串T[]可以划分为四个部分:已匹配子串的前缀、已匹配子串、失配字符X和失配字符的后缀子串。同理模式串P[]可划分为前缀、失配字符Y和后缀三部分。KMP算法的核心就在于如何在模式串的前缀中找到合适的字符作为下一次匹配过程的新起点,而不是简单的从模式串的起始位置重新开始匹配,从而减少匹配次数,提高效率。构造查询表next[0,m)为确定模式串下一次匹配过程的新起点,可以事先构造查询表next[原创 2021-10-17 16:26:21 · 644 阅读 · 0 评论
分享