题面解释:
题目要求对一段经过编码的二进制数据进行校验,数据由0个或多个编码单元组成。编码单元分为两种类型:简单编码单元和复杂编码单元。简单编码单元的TAG为0xF0,后面跟随4字节的值;复杂编码单元的TAG为0xF1,后面包含一个重复次数(1字节)、一个长度(4字节),以及指定字节数的值部分,这部分可以由0个或多个编码单元组成。输入为一行16进制表示的编码数据,输出解码后的总字节数或-1表示不合法。如果编码数据符合规则,计算解码后的总长度;否则,返回-1表示数据不合法。
思路:字符串模拟,递归
F0是普通编码,我们直接识别即可。
F1是复杂编码,它指示着后续的len长度的字节数据会重复rep次。而且我们发现这len长度的字节数据内同样可以蕴含F1编码。所以我们自然想到需要用递归来拆解这个编码。
P2300.第1题-数据解码
题目内容
指定有一段经过编码的二进制数据,数据由0个或多个"编码单元"组成。
编码单元“的编码方式存在如下两种:
1.简单编码单元如下所示,其中:
- TAG所占长度须为1字节,其值须为0×F0
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写