华为OD机试 - TLV解析Ⅰ(Java 2023 B卷 100分)

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、Java算法源码
    • 五、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

TLV编码是按[Tag Length Value]格式进行编码的,一段码流中的信元用Tag标识,Tag在码流中唯一不重复,Length表示信元Value的长度,Value表示信元的值。

码流以某信元的Tag开头,Tag固定占一个字节,Length固定占两个字节,字节序为小端序。

现给定TLV格式编码的码流,以及需要解码的信元Tag,请输出该信元的Value。

输入码流的16进制字符中,不包括小写字母,且要求输出的16进制字符串中也不要包含小写字母;码流字符串的最大长度不超过50000个字节。

二、输入描述

输入的第一行为一个字符串,表示待解码信元的Tag;
输入的第二行为一个字符串,表示待解码的16进制码流,字节之间用空格分隔。

三、输出描述

输出一个字符串,表示待解码信元以16进制表示的Value。

输入 输出 说明
31
32 01 00 AE 90 02 00 01 02 30 03 00 AB 32 31 31 02 00 32 33 33 01 00
32 33 需要解析的信元的Tag是31,从码流的起始处开始匹配,
第一个信元的Tag是32,信元长度为1(01 00,小端序表示为1);
第二个信元的Tag是90,其长度为2;
第三个信元的Tag是30,其长度为3;
第四个信元的Tag是31,其长度为2(02 00),
所以返回长度后面的两个字节即可,即32 33。

四、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input1 = scanner.nextLine();
        String input2 = scanner.nextLine();
        String[] arr = input2.split(" ");
        for (int i = 0; i < arr.length; ) {
            String tag = arr[i];
            int len = Integer.parseInt(arr[i + 2] + arr[i + 1]);
            
            StringBuilder value = new StringBuilder();
            i += 2;
            for (int j = 1; j <= len; j++) {
                value.append(arr[i + j] + " ");
                i++;
            }
            
            if (tag.equals(input1)) {
                System.out.println(value);
                break;
            }
            
            if (i <= (arr.length - 1)) {
                i++;
            }
        }
    }
}

五、效果展示

1、输入

31
32 01 00 AE 90 02 00 01 02 30 03 00 AB 32 31 31 02 00 32 33 33 01 00

2、输出

32 33

3、说明

华为OD机试 - TLV解析Ⅰ(Java 2023 B卷 100分)_第1张图片


下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,华为od,java,算法,送书,学习方法)