我需要在数据结构(DS)中添加字符串。后来我需要找到字符串,然后根据相同的条件将其删除。
Hashset最适合这里,因为它为搜索和删除给定元素提供了O(1)复杂性也只需要更新父元素 右或左节点。在Arraylist / Array中,搜索的O(n)和删除的相同。
根据我的理解,Hashset在这里会更好,因为我需要搜索大量元素,如果找到则删除它。
我的问题: - Hashset或其他DS在这里更好吗?
答案 0 :(得分:1)
通常这些任务最好由Trie data structure及其变体处理。 或者,您可以使用哈希表,但它不能保证最坏情况的复杂性。
答案 1 :(得分:0)
像往常一样,这取决于您的需求:
如果你只是需要添加String实例,检索并删除它们,那就没关系了 - HashSet
是你的选择(TreeSet
具有更差的渐近复杂度,它适用于以下情况:由于某种原因,你需要订单的字符串实例,例如按字母顺序排列)
如果您希望存储并有效搜索具有指定前缀的所有String实例,请使用在Serge Rogatch的回答中正确提及的Trie
如果您想检查指定的String实例中是否存在模式,请使用Suffix tree