我有一个类消息,如下所示:
class Message{
String entity;
Boolean isAvailable;
.........
//getters and setters
.....
.....
}给定一个代码,我必须找出其实体与此代码的前8个字母或更多匹配的所有消息实例,并且这些实例是“可用”的。
这看起来是一个Trie很适合的地方。
然而,考虑到搜索同样基于两个属性--有没有什么算法可以让我更快地选择?
或者,是否有可以容纳多个键的Trie变体?
发布于 2013-08-25 17:40:11
当isAvailable设置为false时,为什么不直接从trie中删除它呢?
或者,如果您还需要搜索isAvailable == false,那么您可以只尝试两次。这提供了由trie控制的O(n)查找时间,因此它是您使用trie所能获得的最快速度(听起来确实像是您的问题的正确解决方案)。
值得注意的是,“容纳多个键”可能不是您想要的,因为这指的是匹配entity和entity2的Message。这有点复杂,但可以通过在entity上使用trie和在entity2上使用trie,并在查找时获取结果集的交集来完成,这也会产生线性时间解决方案。
https://stackoverflow.com/questions/18426011
复制相似问题