用于收集带前缀和后缀查询的字符串的数据结构

时间:2012-03-27 02:22:07

标签: c++ data-structures collections

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

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

我正在考虑使用Trie但我们将不得不使用2次尝试一次用于后缀而另一次用于前缀,该方法的问题是我们将无法在所需时间内应用remove()

1 个答案:

答案 0 :(得分:1)

您需要的数据结构称为trie或前缀树。您可以组合两个前缀树,一个包含原始字符串,另一个包含反向字符串。必须在其中一个前缀树上执行搜索,具体取决于您需要的内容 - 后缀或前缀。使用此数据结构,您不仅可以搜索后缀和前缀,还可以查找包含任意子字符串的字符串。