Simple Match - 简单匹配


问题

在文本中查找模式出现的所有位置(长度为长度为)。

解法

对于,从开始,依次比较。若相等则向后移动一个位置再继续比较,直到,即,说明下标出现;否则重新开始新一轮匹配。

下面演示一个匹配的过程:

SimpleMatch1.png

个字符开始匹配,有,继续匹配下一个字符;

SimpleMatch2.png

个字符开始匹配,有,继续匹配下一个字符;

SimpleMatch3.png

个字符开始匹配,,匹配成功,算法结束;

显然对于中的每个位置,都需要进行一次匹配,而每次匹配的平均时间复杂度为的长度。该算法的时间复杂度为


源码

SimpleMatch.h

SimpleMatch.cpp

测试

SimpleMatchTest.cpp