如何实现在固定长度字节数组中搜索前缀的有效方法?

时间:2013-05-26 21:05:14

标签: algorithm search go bytearray

我有一大组固定长度的字节数组,例如:。

type Fixed [64]byte

set := make([]Fixed, 10240)

大多数条目都有不同的5-7字节前缀。 我如何能够实现基于给定前缀查找set元素的有效方法? e.g:

set.Find([7]byte{ /*...*/ }) == /* no hit || single hit || multiple hit */

2 个答案:

答案 0 :(得分:1)

您似乎需要trie

您可以将您的设置存储为trie并给出一个前缀,然后一直向下并进入节点。然后,您只需遍历以此节点为根的子树,即可获取所有项目。

答案 1 :(得分:0)

如上所述,特里可能对你有好处。 你也可以使用哈希表,密钥将是前7-8个字节(可以使用长的),访问时间是O(1),我认为更容易实现。