可可肉的逻辑题---(三)需要压缩的数据 (下)

大家好,我是二厶可可肉,来自河北省石家庄市,现就读于北京理工大学暂隶属于北京爱乐游信息技术有限公司

 

今天公司的任务早早的做完了,也没有什么新任务安排,在听听音乐,逛逛论坛,收获颇丰,突然想起了博客的事情,中国人大都含蓄,看帖的不少,回复的寥寥无几。似乎不太喜欢把自己的想法说出来吧,可可肉归结原因在于,会的不惜的回答,不会的围观,坐等答案,思前想后,现在就更新更新答案吧!不过可可肉需要提醒观众的是:编程是一个实践性的工作,勤于思敏于行。如果你只是一个普通人,可可肉是非常不建议不经过思考直接阅读答案。

 

(三)需要压缩的数据? (下)

 

点击查看原题    题目来源“仙掌游戏”(如果您有比较好的题目,可以发给我,采纳后同样有推荐链接)

这里先说一下思路,首先需要有一个东西来遍历传入的数字,咱们暂且管这个叫做message(信息)吧!遍历的方法可以使用 for(  byte item  :  message  ){ } 方式来进行对信息的遍历。

题目中说了,这里面只会有1~9的数字,或者说,可以拿0作为分隔符(只能用0),那如何判断是否重复了呢?那就需要一个上一个数字是什么吧?这里就引进了lastNumber 这个变量。那到底重复了几次呢?rep(repeat重复次数),那么如何去判断是否超过3次呢?当发现当前数字与lastNumber 不一样了,证明数字换了,判断一下lastNumber的重复次数,如果小于3次,按实际次数追加,否则,按 0xy格式来记录(0开始,x上被重复数,y重复次数)

 

有的朋友可能会说了:“你的这个压缩方法,如果连续超过10次怎么办?例如13次?”

这个就需要看实际的情况了,如果需要,可以考虑 以0 x yyy0 的格式,以0开始0结尾,第二位为重复数,后面为重复次数。

可能又有朋友说了“如果5重复10次,按照上面的方法不就成了05100了吗?你怎么来分别到底是5重复1次,还是5重复10次呢?”

的确,如果使用 双0来分割,就需要考虑到会出现压缩分隔符的可能,这里可以考虑使用8进制或“去0十进制”来解决问题,大家可能有的对八进制不太熟悉,我在这简单的介绍一下,咱们现实生活中,用的几乎都是十进制,逢十进一位,8进制,就是逢8进一。不过,这里面的八进制需要做一些功能上的修改,例如,原有的8进制没有8,有0,现在需要把0去除,可以把8当0(或者每位值错位+1,只要意思前后统一就行)

 

解决思路就先写到这里吧,那天看到帖子里面有人提到“按位压缩”的概念,具体办法我就不多说了,感兴趣的可以去问问谷哥跟度娘,我想他们会介绍的比较清楚。

 

因本人能力及时间所限,本文就先写到这里,欢迎大家留下宝贵意见,期待与CSDN社区朋友共同成长害羞

 

希望大家喜欢 

 

感谢rocktyt2提供思维维度帮助。以及ccc43542876、sherow、rocktyt2的积极参与。

 

大家有兴趣的可以把自己做的答案发上来,共大家参考一下~

 

这里需要说一下,结果不是最重要的,重要的是解题思路

 

 

如果觉得还不错,就请点一下下面的“顶”吧!

 

 

 

 

 

您的支持是我创作的最大动力

 

 

 

鸣谢

 

师父

CSDN

 

二厶可可肉

2012年11月08日

 

 

 

 

 

 

您的支持是我创作的最大动力

 

 

 

 

 

 

 

 

 

 

 

 

相关文章

 

 

 

 

可可肉的逻辑题---(一)到底听到多少响

可可肉的逻辑题---(二)最初至少有几个桃子呢?

可可肉的逻辑题---(二)最初至少有几个桃子呢? (下)

可可肉的逻辑题---(三)需要压缩的数据

可可肉的逻辑题---(四)把谁给丢了?

可可肉的逻辑题---(五)数太大了怎么办?

烧饼铺

可可肉的逻辑题---(六)聪明的妻子

 

 

你可能感兴趣的:(可可肉的逻辑题---(三)需要压缩的数据 (下))