一、压缩的核心
压缩的核心思想是用记号来代替重复出现的字符串,举个栗子: AABAA ,这个字符串中 AA 出现了2次,那么我可以用 1 这个数字来代替 AA ,那么这个字符串压缩后就成了 1B1 ,当然,这不是无损压缩,因为 1 是什么,在解压的时候是不知道的,我们可以简单的把记号和原串的对应表附在字符串后面,这样解压的时候就可以查询解压了,比如 1B1:1,AA 懂点程序的都能明白,确实可以根据这个串来还原,但是这种附一个对应表的做法怎么看都很累赘。LZW 给出了一种方式,让我们的这种做法显得不那么累赘。让我们可以边解压,边翻译出记号对应的原始串。
二、LZW算法概述
- 也就是说如果合并的字符串在字典里,就用字典里的编码替换;如果字符不在字典里就在字典里为该字符建立一个编码映射;
-
也就是说第一次出现的合并字符不用字典里的编码替换,只有出现过一次的(字典里有映射的)才用编码替换**