将 Boyer-Moore字符串搜索算法应用于字符串:
SSIMPLE EXAMPLE
带有模式:
EXAMPLE
算法流程为:
SSIMPLE EXAMPLE ---------------------(1)
EXAMPLE
SSIMPLE EXAMPLE ----------------------------(2)
EXAMPLE
SSIMPLE EXAMPLE ----------------------------------(3)
EXAMPLE
但是将相同的算法应用于相同的字符串时:
SSIMPLE EXAMPLE
但模式略有不同:(用T代替第一个E)
TXAMPLE
算法流程为:
SSIMPLE EXAMPLE ------------------- (1)
TXAMPLE
SSIMPLE EXAMPLE ----------------------(2)
TXAMPLE
SSIMPLE EXAMPLE ---------------------------(3)
TXAMPLE
从第一个例子:
在第二步中,E
位于E
并在第二个例子中:
在第二步中,T
不在E
下但在空格下
为什么?字母T
和E
分别在单词TXAMPLE
和EXAMPLE
中有何不同?
答案 0 :(得分:0)
在示例中,第一个和最后一个字符是相同的,因此如果您匹配最后一个字符,那么您就知道该字符串在该位置具有E.因此,当您尝试移动EXAMPLE时,您必须假设该位置的E与示例中的第一个E匹配。
在TXAMPLE中,最后一个字符只出现在字符串的末尾,所以如果你匹配最后一个字符,那么你可以将字符串移动到目前为止下一个尝试的匹配根本不与第一个字符重叠,因为E除了在字符串末尾之外的任何地方都不匹配。