0

我有一个类 Message 如下:

class Message{

String entity;
Boolean isAvailable;
.........

//getters and setters
.....
.....
}

给定一个代码,我必须找出所有 Message 实例,其实体与该代码的前 8 个或更多字母匹配,并且是“可用的”。
这看起来是 Trie 很适合的地方。
但是,鉴于搜索同样基于 2 个属性 - 是否有任何算法可以让我更快地选择?
或者,是否有可以容纳多个键的 Trie 变体?

4

1 回答 1

0

isAvailable当设置为 false时,为什么不直接从 trie 中删除它?

或者,如果您也需要搜索isAvailable == false,那么您可以尝试两次。这提供了由 trie 支配的 O(n) 查找时间,因此它与使用 trie 一样快(这听起来确实是解决问题的正确方法)。

值得注意的是,“容纳多个键”可能不是您要查找的内容,因为这指的是匹配匹配的 a Message,例如entityentity2。这有点复杂,但可以通过使用 trie onentity和 trie on来完成entity2,并在查找结果集的交集时,这也会产生线性时间解。

于 2013-08-25T09:40:10.900 回答