■ 题目描述
描述:两端通过TLV格式的报文来通信,现在收到对端的一个TLV格式的消息包,要求生成匹配后的(tag, length, valueOffset)列表。
具体要求如下:
(1)消息包中多组tag、length、value紧密排列,其中tag,length各占1字节(uint8_t) , value所占字节数等于length的值
(2)结果数组中tag值已知,需要填充每个tag对应数据的length和valueOffset值(valueOffset为value在原消息包中的起始偏移量(从0开始,以字节为单位)),
即将消息包中的tag与结果数组中的tag进行匹配(可能存在匹配失败的情况,若结果数组中的tag在消息包中找不到,则length和valueOffset都为0)
(3)消息包和结果数组中的tag值都按升序排列,且不重复
(4)此消息包未被篡改,但尾部可能不完整,不完整的一组TLV请丢弃掉
解答要求
时间限制:C/C++ 1000ms | 其他语言:2000ms | 内存限制:C/C++ 32MB | 其他语言:64MB
输入
● 第一行: 一个字符串,代表收到的消息包。字符串长度在10000以内。
● 说明1: 字符串使用十六进制文本格式(字母为大写)来展示消息包的数据,如0F04ABABABAB代表一组TLV:前两个字符(0F)代表tag值为15,
● 接下来两个字符(04)代表length值为4字节,接下来8个字符即为4字节的value。
● 说明2: 输入字符串中,每一组TLV紧密排列,中间无空格等分隔符
● 第二行: 需要匹配的tag数量n (0 < n <1000) 。
● 后面n行: 需要匹配的n个tag值(十进制表示),递增排列。
输出
● 和需要匹配的n个tag对应的n行匹配结果,每一行由长度和偏移量组成。
样例 1
输入

0F04ABABABAB
1
15

输出

4 2

解释
tag15(十六进制0F)对应数据的长度为4,其value从第三个字节开始,因此偏移量为2
样例2
输入

0F04ABABABAB1001FF
2
15
17

输出

4 2
0 0

解释
第二个tag匹配失败

public class TLVII {public int[][] getTag(String ltv,int[] tags){if (ltv==null||ltv.length()==0){return null;}int n = tags.length;int[][] ans = new int[n][2];int preIndex = 0;for (int i=0;i<ltv.length();i+=preIndex){int tag = convertHex(ltv.substring(i,i+2));int len = Integer.parseInt(ltv.substring(i+2,i+4));for (int j=0;j<tags.length;j++){if (tag==tags[j]){ans[j][0] = len;ans[j][1] = preIndex/2+2;}}preIndex += 2*len+4;}return ans;}private int convertHex(String hex){return Integer.parseInt(hex,16);}public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()){String tlv = sc.nextLine();int n = sc.nextInt();int[] tags = new int[n];for (int i=0;i<n;i++){tags[i] = sc.nextInt();}int[][] ans = new TLVII().getTag(tlv,tags);System.out.println(JSONObject.toJSONString(ans));}}
}

【华为机试】【字符串】【Java】TLV解析 Ⅱ相关推荐

  1. 华为机试-字符串子序列II

    华为机试-字符串子序列II 1.思路 2.代码 1.思路 理解这个抽象题目,其实就是一个求最长子序列的题目.求最长子序列我们一般使用动态规划来做. 与以往不同的是,我们需要倒序求最长子序列,这样可以求 ...

  2. 华为机试--字符串ASC码+偏移量实现加密

    华为机试–字符串ASC码+偏移量实现字符串加密的JS实现 题目描述:给出原文字符串str,通过对字符串的每个字母进行改变来实现加密,加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量.数组 ...

  3. 华为机试(JAVA)真题Od【A卷+B卷】

    各语言题库: [Python+JS+Java合集][超值优惠]:Py/JS/Java合集 [Python]:Python真题题库 [JavaScript]:JavaScript真题题库 [Java]: ...

  4. 华为机试字符串分割c语言,2014年华为上机机试c语言标题和答案

    2014年华为上机机试c语言题目和答案 自己code出来的,结果是正确的,但是其中还有很多的优化之处,还请各位大神多多指导. 代码打包: http://download.csdn.net/detail ...

  5. 华为机试HJ74:参数解析

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 在命令行输入如下命令: xcopy /s c:\ d:\, 各个参数如下: 参数1: ...

  6. 华为机试——字符串反转

    题目描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串.例如: 输入描述: 输入N个字符 输出描述: 输出该字符串反转后的字符串 示例1 输入 abcd 输出 dcba 思路:利用st ...

  7. 华为机试——字符串分隔

    题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于1 ...

  8. 华为机试——字符串最后一个单词的长度

    题目描述 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 输入例子: hello world 输出例子: 5 ...

  9. 华为机试——字符串压缩(stringZip)

    /* 二.题目描述(40分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串. 压缩规则: 1. 仅压缩连续重复 ...

  10. 华为机试—字符串首字母转换成大写

    举例: 输入:this is a book 返回:This Is A Book #include<stdio.h> #include<stdlib.h> #include< ...

最新文章

  1. 看清头秃元凶,腾讯AI首度揭示真相
  2. fatfs文件系统支持中文长文件名
  3. 2个红外传感器循迹原理_红外线光学气体浓度传感器作用原理
  4. CentOS7: How to resolve curl#56 - Recv failure: Connection reset by peer
  5. Linux CentOS如何汉化系统
  6. windows下搭建iphone开发环境
  7. 面试—每日一题(6)
  8. 成为一名PHP专家其实并不难
  9. 二分模板 from y总
  10. 读书笔记-1-《书都不会读,你还想成功?》
  11. 将日期转换成大写例如:二零一三年十二月
  12. 三星android驱动程序错误,android系统的三星手机插入电脑无法识别
  13. python-web自动化测试-对话框的处理
  14. Python学习日记之从Tushare上获取500成分股
  15. MyEclipse 中文转英文
  16. Vue CLI3 bable兼容ie11ie10
  17. 031:verbatim 标签
  18. QT Creator 应用程序*.exe文件打包发布详细教程【绿色便携形式 和 安装包形式】
  19. Spring源码分析(1) —— 从Xml的加载到解析
  20. I-frame、B-frame、P-frame及DTS、PTS的关系(转)

热门文章

  1. 如何渲染一个生物 - Minecraft 1.16 Forge Mod 开发笔记
  2. app保活面试题,Android动态换肤实现原理解析,再不刷题就晚了!
  3. 数据挖掘与数据化运营实战.导读
  4. Android 编译报XML declaration not well-formed错误的解决方法
  5. Material accumulation 素材积累
  6. 仿拼多多砍价商城php源码,来客推仿拼多多电商小程序商城源码免费版+APP+钱包+开源...
  7. Java爬虫更新mysql数据库(简单事例)
  8. 程序验证(八):形式语义
  9. 浙大远程教c语言在线作业答案,浙大远程教育_会计电算化_在线作业答案.docx
  10. input输入框限制输入特殊字符