哈夫曼编码定义
哈夫曼编码是一种编码格式,属于可变字长编码的一种,该方法依照字符出现的概率来构建异字头的平均长度最短的码字,最终实现根据使用频率来最大化节省码字(字符)的存储空间和提高传输效率的目的,在数据压缩和通讯领域应用的非常广泛。
哈夫曼编码的码字是异前置码字,任一码字不会是另一码字的前面部分,这样各种码字可以连在一起传输,中间无需空格分离但又不会混淆。
Kotlin 中对字符串进行哈夫曼转码
对一串字符进行哈夫曼编码可分为五个流程:
1. 统计字符出现的次数,使用 HashMap 集合存储统计结果
// HashMap 的 key 就是字符本身,value 为出现次数
var arrMap:HashMap<Byte,Int> = HashMap()
for(value in arr){
var count = arrMap.get(value)
// 次数不为空则继续叠加计数