将给定popcount的位串映射到整数

时间:2018-02-23 11:28:08

标签: algorithm

我有一个进程返回给定长度N的位串并给出popcount k,即每个位串都有k个和N - k个零。 我需要计算返回每个位字符串的频率。目前,我使用关联的base2-integer来增加2^N维数组中的计数器。但是,对于大型N,这变得不切实际,因为数组太大。为了做得更好,我想利用事先知道popcount k的事实,所以我只需要一个维度M = N choose k数组来存储计数。为此,我需要一个过程来将给定的位串转换为唯一的整数,例如对于示例N=3k=2,以下映射就足够了:

011 → 1
110 → 2
101 → 3

请注意,我不需要反向映射,尽管它应该存在。什么可能是这样的映射?这(与之相关)是一个已知问题吗?

1 个答案:

答案 0 :(得分:2)

正如SaiBot建议的那样,您可以使用哈希集将唯一的位串映射到值。否则,你可以查找"排名排列"作为对(n,k)0和1的所有排列进行编号的方法。