#P1439. 【华为】2024-9-13-第一题-数据解码
【华为】2024-9-13-第一题-数据解码
题目描述
指定有一段经过编码的二进制数据,数据由0个或多个"编码单元"组成。"编码单元"的编码方式存在如下两种:
1.简单编码单元如下所示,其中:
所占长度须为字节,其值须为
的长度固定为字节
2.复杂编码单元如下所示,其中:
所占长度须为字节,其值须为
所占长度固定为字节,用于指示值在解码后消息中重复的次数
所占长度固定为字节,用于指示值的字节数,使用大端序表示
值部分必须由0个或多个"编码单元"组成,且长度必须为字段所指示的字节数
编码后的数据必须完全符合上述两个原则,不允许有任何冗余的字节,请根据上述规则对一段编码后的数据进行校验,如果完全符合上述约束则输出解码后的长度,否则输出。
输入描述
输入一行编码后的二进制数据,按字节进制表示,如表示一串字节的编码后数据
输入的字节数
输出描述
输出解码后的值的字节数,不符合约束返回
样例1
输入
F1 02 00 00 00 05 F0 01 02 03 04
输出
8
样例解释
该码流存在一个复杂编码单元,其中包含一个简单编码单元(内容字节),复杂编码单元的重复数为,所以解码后的总长度为字节
样例2
输入
F1 01 00 00 00 04 F0 01 05
输出
-1
样例解释
第一个编码单元是复杂编码单元,重复数为,长度为,但是长度后的内容仅有字节,码流不合法,返回
样例3
输入
F1 01 00 00 00 06 F0 00 00 00 03 03 03
输出
-1
样例解释
第一个编码单元为复杂编码单元,重复数为、长度为,其中的内容从第一个字节开始为一个简单编码单元,
但简单编码单元后存在数据 既不属于简单单元,也不属于复杂编码单元,为冗余数据,整体数据不合法、应输出