Horspool字符串匹配算法

本文介绍了Horspool字符串匹配算法的工作原理,通过不同情况分析了如何优化字符串比较的移动步长。算法核心在于建立一张移动表,用于确定模式中不同字符出现时的移动距离。文中提到,对于模式中未出现的字符,移动步长为模式长度;而对于已出现的字符,移动步长由模式中相应字符的位置决定。文章提供了算法的代码实现,并在主函数中进行了调用。
摘要由CSDN通过智能技术生成

horspool算法为字符串匹配算法,比较的时候从模式的最右边开始和文本中的字符进行一一标胶,如果全部匹配成功就完成了,但是如果遇到不一样的,我们不会像蛮力法那样才移动一格,根据不同情况移动步子不同,有以下几种情况。(四种情况从算法课本里抄出来的,O(∩_∩)O哈哈~)


1:假设在文本中,对齐模式最后一个字符的元素是字符c,如果模式中不存在c(在我们的例子中,c就是字母S),模式安全移动的幅度就是他的全部长度

文本:A D C……………… S……………………

模式:                 B A R E B R

移动:                                       B A R B E R


2:如果模式中存在c,但它不是模式的最好一个字符(在我们的例子中,c就是字母B),移动时应该把模式中最右边的c和文本中的c对齐:

文本:A D C……………… B……………………

模式:                 B A R E B R

移动:                         B A R B E R


3:如果c正好是模式中最后一个字符,但在模式中其他m-1个字符中不包含c,移动情况类似1,移动幅度为m

文本:A D C………… M B R……………………

模式:                 B A R E B R

移动ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值