我已经阅读了一篇关于互联网的文章,并且知道通过遍历从root进行解码的自然方式,但我希望通过查找表更快地完成。
看完之后,我仍然无法得分。
例如:
input:"abcdaabaaabaaa" code data 0 a 10 b 110 c 111 d
文章说,由于长度可变,它通过取一些字符串来确定长度 最大代码长度并将其用作索引。
output:"010110111001000010000" Index Index(binary) Code Bits required 0 000 a 1 1 001 a 1 2 010 a 1 3 011 a 1 4 100 b 2 5 101 b 2 6 110 c 3 7 111 d 3
我的问题是:
due to variable length, it determine the length by taking a bit of string of
max code length
是什么意思?如何确定长度?
如何生成查找表以及如何使用它?背后的算法是什么?
答案 0 :(得分:4)
对于您的示例,最大代码长度为3位。因此,您从流(010)中取出前3位并使用它来索引表。这给出了代码'a'和bits = 1.您从输入流中消耗1位,输出代码并继续。在第二个周围你会得到(101),其索引为'b'和2位等。
要构建表格,请使其大小为1<< max_code_length,并填写详细信息,就好像您将索引解码为霍夫曼代码一样。如果你看一下你的例子,所有以“0”开头的索引都是a,以“10”开头的索引是b,依此类推。