Python LZW 算法
LZW 压缩算法
string = "thisisthe" dictionary = {chr(i):i for i in range(97,123)} last = 256 p = "" result = [] for c in string: pc = p+c if pc in dictionary: p = pc else: result.append(dictionary[p]) dictionary[pc] = last last += 1 p = c if p != '': result.append(dictionary[p]) print(result)
以上代码运行结果为:
[116, 104, 105, 115, 258, 256, 101]
LZW 解压缩算法
dictionary = {i:chr(i) for i in range(97,123)} last = 256 arr = [97, 97, 98, 256, 258, 257, 259] result = [] p = arr.pop(0) result.append(dictionary[p]) for c in arr: if c in dictionary: entry = dictionary[c] result.append(entry) dictionary[last] = dictionary[p] + entry[0] last += 1 p = c print(''.join(result))
以上代码运行结果为:
aabaabaabaab
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)