数字文本编辑器,只能输入0-9的数字,长度不限, 设计一种保存的方法,保存数字文本占用硬盘最小?

探讨如何设计一个数字文本编辑器,仅允许输入0-9的数字,且不限长度,以实现最节省硬盘空间的保存方法。文章将涉及数据压缩、编码技术和存储效率等关键点。
主线思路两个:
第一个用尽可能少bit位去编码
第二个把重复的字符进行处理

如果按照我们平常存文本的方式存储, 就算是用ASCII码,一个数字需要在硬盘上面占用8位bit位,
但是我们思考下, 0-9只有10个数字, 如果用ASCII码存储的话,会有浪费, 其实只需要4个bit位就可以存储一个数字啦, 4个bit位可以表示16种字符,而0-9只有10种,绰绰有余啦,
多余的6种我们记为 1010 1011 1100 1101 1110 11111 六种
通过使用4位bit位就可以少占用一半的空间啦

0 的二进制表示 0000
1的二进制表示 0001
其他的不列举了

我们再来分析下 一个简单的数字文本 22234345555232323123123123, 我们可以看见2连续重复了3次, 5连续重复了4次 23连续重复了3次, 123连续重复了3次
那我们可以使用 多余的六种 1010 代表单个字符重复
1011 代表两个字符重复
1100 代表3个字符重复
重复后面的4位代表重复的次数,最多可以匹配15次重复

那我们看看我们刚刚那个字符串可以编码生成:
222编码成 0010 1010 0011 不节约
5555编码成 0101 1010 0100 节约1位
232323 0010 0011 1011 0011 节约 2位
123123123 0001 0010 0011 1100 0011 节约4位

 如果想去bat等一线互联网大厂的, 可以看看这个题目,虽然和测试没有多大关系,但是考擦你对计算机基础知识掌握牢不牢

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值