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