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

来源:互联网 发布:苹果ar是什么软件 编辑:程序博客网 时间:2024/05/10 03:39

字符串匹配--sunday 算法

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

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

j      k            thisisasimpleexampleexample             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

0 0
原创粉丝点击