c++ - 带有前缀和后缀查询的字符串集合的数据结构

标签 c++ data-structures collections

我需要一个适合字符串集合的数据结构。用户可以查询集合中具有特定前缀或后缀的字符串的当前数量,如果他们愿意,随后可以从集合中删除这些字符串。用户也可以插入一个字符串;如果多次插入一个字符串,则应返回多次。

查询操作的时间复杂度应为 O(m + log n),其中 m 是操作结果的预期大小。

我正在考虑使用 Trie,但我们将不得不使用 2 次尝试,一次用于后缀,另一次用于前缀,该方法的问题是在这种情况下我们将无法在要求的时间内应用 remove() .

最佳答案

您需要的数据结构称为 trie,或前缀树。您可以组合两个前缀树,一个包含原始字符串,另一个包含反转字符串。搜索必须在其中一棵前缀树上执行,这取决于您需要什么 - 后缀或前缀。使用这种数据结构,您不仅可以通过后缀和前缀进行搜索,还可以找到包含任意子字符串的字符串。

关于c++ - 带有前缀和后缀查询的字符串集合的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9882556/

相关文章:

c++ - 设置类成员 unique_ptr<T[]> 数组而不复制

c++ - Visual Studio - 返回值失败时没有编译错误

c++ - 我的变量神秘的写违规

C- 可能的内存泄漏?

java - POP方法链表

java - 如何显示 ArrayList 中包含重复值的所有项目?

c++ - 将多个 char* 字符串格式化为 std::string

javascript - 二分键的数据/逻辑结构(JS)

java - JPA - SortedSet 需要 OrderBy

java - 为什么 LinkedHashSet 的迭代时间不依赖于其容量?