用于双向迭代器的高德纳-莫里斯-普拉特算法
Knuth-Morris-Pratt algorithm for bidirectional iterators
双向迭代器是否有任何Knuth-Morris-Pratt算法实现?在Boost.Algorithm中,有随机访问迭代器的版本。
让我们来看看一个标准实现。我们实际需要随机访问的唯一地方是在跳转i = p[i]
后比较pattern[i]
和当前角色。而不是直接访问pattern[i]
(在双向迭代器的最坏情况下,这需要线性时间),我们可以在构建过渡表时将下一个字符c
与p[i]
一起存储在模式中。
但是,它并没有那么有用。为每个i
存储一个符号本质上与将模式复制到支持随机访问的结构中是一回事,因此直接执行此操作会更容易。
相关文章:
- C++莫尔斯到英语
- 单词之间的莫尔斯电码空格问题
- 如何在不导致堆栈溢出的情况下计算非常大的数字和很小的 HCF.我正在使用欧几里得算法
- 用于双向迭代器的高德纳-莫里斯-普拉特算法
- 难以将莫尔斯电码分类到二叉树中
- C++将 ASCII 转换为莫尔斯电码
- 使用角落哈里斯知道角落的数字
- 获取莫尔斯电码转换器的字符串长度保持循环
- C++文本到莫尔斯电码
- 霍勒里斯的基数排序
- 使用欧几里得算法找到GCF(GCD)
- 在 c++ 中扩展欧几里得算法的递归中究竟发生了什么?
- 高德纳-莫里斯-普拉特前缀表生成与通配符
- 从字符串中读取每个莫尔斯电码
- 将莫尔斯值解码为字母表
- 英语到莫尔斯转换器
- 欧几里得算法函数参数
- 不好的论点,哈里斯函数
- 使用欧几里得算法识别两个值的最大公约数 (GCD)
- (索拉里斯) LD:致命:...版本"GCC_4.2.0"不存在