我正在尝试了解运行长度编码,我在网上发现了这个我无法做到的挑战.它要求你编写一个名为compression(strg)的压缩函数,它将长度为64的二进制字符串strg作为输入,并返回另一个二进制字符串作为输出.输出二进制字符串应该是输入字符串的行程编码.
compression(‘1010101001010101101010100101010110101010010101011010101001010101’)
‘1010101001010101*4’
这是我的,但这没有找到模式:
from itertools import * def compression(strg): return [(len(list(group)),name) for name, group in groupby(strg)]
我需要一些帮助解决这个问题.
解决方法:
我相信你正在将RLE与Lempel / Ziv滑动窗口压缩混为一谈.
RLE严格适用于重复字符:WWWWWWWW => W8
LZ有一个滑动窗口,可以像你描述的那样拾取模式.
David MacKay的site在Python中有示例压缩代码,包括LZ