继续匹配

当P=1000时,也就是说P[3]=1即匹配模式串p[0...3]=“abac”,正好找到了一个对应的匹配,而我们也可以根据此条件来判断是否已经找到了匹配。

Shift-and使用的二进制信息来编码模式串,使用位运算&来达到并行匹配字符串,利用状态码P来保存当前位的匹配结果。可以观察出算法的时间复杂度很低,如果模式串的长度不超过机器字长,其效率是非常高的。
Shift-or在这里就不多做介绍了,其原理和Shift-and类似,只不过Shift-or使用0来标识存在,同时使用|来代替&进行状态码的计算。
相关参考:
1.http://igm.univ-mlv.fr/~lecroq/string/node8.html#SECTION0080
2.http://igm.univ-mlv.fr/~lecroq/string/node14.html#SECTION00140
3.https://shanire.gitee.io/oiwiki/string/kmp/#knuth-morris-pratt
4.https://shanire.gitee.io/oiwiki/string/bm/
5.http://igm.univ-mlv.fr/~lecroq/string/node6.html#SECTION0060
6.https://baike.baidu.com/item/sunday 算法/1816405
7.http://igm.univ-mlv.fr/~lecroq/string/node5.html#SECTION0050
,