解题思路
本题是对一个「嵌套在数组里的 TLV 流」做顺序解析(线性扫描),并统计其中出现过的不同 tag 种类数。核心是一个贪心式的一次性顺序解析:
- 从下标
i = 0 开始,每次尝试读取一个 TLV:
- 至少需要
tag 与 length 两个元素;若剩余不足两个,说明数组尾部残缺 → 格式错误,返回 0。
length 必须严格大于 0;否则不符合规范 → 返回 0。
- 一个 TLV 占用的元素个数为
2 + length(tag + length + value),并需补齐到 4 的倍数。若补齐后超出数组长度,说明数据不完整 → 返回 0。
- 校验该 TLV 覆盖的每一个元素(tag、length、value、padding)是否都落在
[0, 99] 的合法取值范围内;越界即格式错误 → 返回 0。