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

更多推荐

python算法菜鸟教程_Python LZW 算法 | 菜鸟教程