用于双向迭代器的Knuth-Morris-Pratt算法

时间:2017-04-30 14:54:35

标签: c++ algorithm boost

双向迭代器是否有任何Knuth-Morris-Pratt算法实现?在Boost.Algorithm中,有随机访问迭代器的版本。

1 个答案:

答案 0 :(得分:0)

让我们来看看标准实现。我们实际需要随机访问的唯一地方是在跳转pattern[i]后比较i = p[i]和当前字符。不是直接访问pattern[i](在最坏的情况下需要线性时间用于双向迭代器),我们可以在构建转换时将下一个字符cp[i]一起存储在模式中表

然而,它并没有那么有用。为每个i存储符号与将模式复制到支持随机访问的结构基本相同,因此直接执行它会更容易。