为什么2例中的步骤2不同?

时间:2012-11-01 04:17:42

标签: algorithm string-matching boyer-moore

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下但在空格

为什么?字母TE分别在单词TXAMPLEEXAMPLE中有何不同?

1 个答案:

答案 0 :(得分:0)

在示例中,第一个和最后一个字符是相同的,因此如果您匹配最后一个字符,那么您就知道该字符串在该位置具有E.因此,当您尝试移动EXAMPLE时,您必须假设该位置的E与示例中的第一个E匹配。

在TXAMPLE中,最后一个字符只出现在字符串的末尾,所以如果你匹配最后一个字符,那么你可以将字符串移动到目前为止下一个尝试的匹配根本不与第一个字符重叠,因为E除了在字符串末尾之外的任何地方都不匹配。