在研究Knuth 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
请解释“正确”一步的逻辑/原因。
发布于 2012-11-01 20:12:58
当“D”与“D”相比时,它会发现不匹配。并且这个算法‘记住’之前的"AB“是比较的,所以它需要检查不匹配的字符是否是'C‘。
KMP方法的思想在“算法简介”一书中作了解释。它非常类似于无限状态机方法,它可以帮助您理解它。
https://stackoverflow.com/questions/13177089
复制