sunday算法介绍 【字符串模式匹配】

字符串匹配--sunday 算法

听说这个算法比kmp效率还高,而且重要的是还好理解,所以就.....

好了,sunday算法还真的很好理解,用下面的例子来说明吧:

j      k            
thisisasimpleexample
example             
i                   
这个例子中上面的字符串是待查找字符串,下面的是子串。sunday的思想是这样的:

首先i,j两个指针指示的位置(也就是从头开始匹配),当发现失配的时候就判断子串的后一位在母串的字符(在上面的例子中是s,k标记处)是否在子串中存在?如果存在则将该位置和子串中的该字符对齐,在从头开始匹配。如果不存在就将子串向后移动,和母串k+1处的字符对齐,再进行匹配。重复上面的操作直到找到,或母串被找完结束。

对于上面的例子继续进行,刚才说了失配,并且s在子串中不存在,所以子串向后移动,子串的第一个字符和母串的k+1位置的字符对齐,如下图:

        j      k    
thisisasimpleexample
        example     
        j           

这次比较还是失配,但是k位置的a在子串中出现了,而且第3个就是(如果有多个匹配的,这时候一定要将子串中靠后出现的a和母串中的a对齐)如下图,匹配成功:

             j      
thisisasimpleexample
             example
             i      


C++语言实现查看本人文章:leetcode28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值