支持附加、前置和搜索操作的字符串数据结构

标签 string algorithm data-structures pattern-matching string-search

我需要构建一个文本编辑器作为我的迷你项目,我需要设计一个支持以下操作的数据结构或算法:

  • Append : 在字符串末尾追加一个字符。
  • Prepend : 在字符串开头添加一个字符。
  • 搜索:给定一个搜索字符串 s,找到该字符串的所有出现。

每个操作在 O(log n) 时间内或更少。搜索和替换操作将是可观的,但不是必需的。字符串的最大长度是常数。有什么想法可以实现吗?

谢谢!

最佳答案

此类应用程序的常见数据结构是 Rope ,其中 Append 和 Prepend 是 O(1),尽管这在一定程度上取决于树是否平衡。然而,正如 Толя 所指出的,搜索将是线性的。

肯定有一些数据结构可以使搜索更快,例如 Suffix Tree , 但它们可能不适合文本编辑器应用程序。

关于支持附加、前置和搜索操作的字符串数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15895689/

相关文章:

c - 在 c 中实现 xml 解析器

java - 将具有平面列结构的结果集转换为分层数据结构

c# - 删除某个字符后的所有内容(IndexOfAny 和 Remove)

java - 二维数组、字符串、 double 和加法

java - 检查字符串是否仅包含匹配的字母和/或连字符?

javascript - 检查给定的字符串是否是同构的

c# - c#中字符串比较的更快算法

algorithm - 最好的压缩算法? (最佳定义见下文)

Python - 生成十六进制值的所有组合

algorithm - 查询R^N中大量多维点