我需要一个适当的数据结构来收集字符串。用户可以查询集合中具有特定前缀或后缀的当前字符串数,并随后从集合中删除这些字符串(如果他们选择)。用户还可以插入一个字符串;如果多次插入一个字符串,则应多次返回。
查询操作的时间复杂度应为O(m + log n),其中m是操作结果的预期大小。
我正在考虑使用Trie但我们将不得不使用2次尝试一次用于后缀而另一次用于前缀,该方法的问题是我们将无法在所需时间内应用remove()
答案 0 :(得分:1)
您需要的数据结构称为trie或前缀树。您可以组合两个前缀树,一个包含原始字符串,另一个包含反向字符串。必须在其中一个前缀树上执行搜索,具体取决于您需要的内容 - 后缀或前缀。使用此数据结构,您不仅可以搜索后缀和前缀,还可以查找包含任意子字符串的字符串。