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

C++ 用于收集带有前缀和后缀查询的字符串的数据结构,c++,data-structures,collections,C++,Data Structures,Collections,我需要一个合适的数据结构来收集字符串。用户可以查询集合中具有特定前缀或后缀的字符串的当前数目,如果选择,则随后从集合中删除这些字符串。用户也可以插入一个字符串;如果一个字符串被多次插入,它应该被返回多次 查询操作的时间复杂度应该是O(m+logn),其中m是操作结果的预期大小 我正在考虑使用Trie,但我们必须使用两次尝试,一次尝试后缀,另一次尝试前缀,这种方法的问题是,在这种情况下,我们将无法在所需时间内应用remove()。您需要的数据结构称为Trie,或前缀树。可以组合两个前缀树,一个包含

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

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


我正在考虑使用Trie,但我们必须使用两次尝试,一次尝试后缀,另一次尝试前缀,这种方法的问题是,在这种情况下,我们将无法在所需时间内应用remove()。

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

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