在研究字符串的 Knuth-Morris-Pratt算法时:
ABC ABCDAB ABCDAB
表示模式:
ABCDABD
我被困在一步。我将突出显示我目前陷入困境的步骤。
ABC ABCDAB ABCDAB
ABCDABD
ABC ABCDAB ABCDAB
ABCDABD
ABC ABCDAB ABCDAB
ABCDABD
ABC ABCDAB ABCDAB
ABCDABD--------------------(WHY THIS ?)
我不明白上面的步骤。我希望上面的步骤是:
ABC ABCDAB ABCDAB
ABCDABD
请解释“正确”步骤的逻辑/原因。
答案 0 :(得分:1)
当与'D'比较时,它会发现不匹配。并且该算法“记住”先前的“AB”被比较,因此需要检查不匹配的字符是否为“C”。
“算法导论”一书中解释了KMP方法的概念。它与无限状态机方法非常相似,可以帮助您理解它。