如何使用Python有效地解码前缀代码?

时间:2018-07-21 12:51:33

标签: python performance decoding prefix huffman-code

我正在尝试使用以下脚本解码霍夫曼编码的字符串:

def decode(input_string, lookup_table):
    codes = lookup_table.keys()
    result = bytearray()

    i = 0
    while len(input_string[i:]) != 0:
        for code in codes:
            if input_string[i:].startswith(code):
                result.append(lookup_table[code])
                i += len(code)
                break

    return ''.join((chr(x) for x in result))

lookup_table = {'10': 108, '00': 111, '0111': 114, '010': 119, '0110': 72, '1111': 33, '1110': 32, '1100': 100, '1101': 101}
input_string = '0110110110100011100100001111011001111'

print decode(input_string, lookup_table)

此脚本提供输出:

'Hello world!'

该脚本适用于此小字符串,但是解码Hamlet的编码版本需要110秒。有没有更有效,更快捷的方法来做到这一点?

0 个答案:

没有答案