■ 题目描述
描述:两端通过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. shell 脚本简单入门
  2. 告别 swagger-ui ,我选择了这款神器!
  3. PHP跳转到另一个画面,并且带着该行内的一个数值作为参数传递给下一个页面.能给例子吗...
  4. LeetCode 31 Next Permutation(下一个全排列)
  5. 【转】oracle存储过程常用技巧
  6. 简述linux中动态库和静态库的制作调用流程
  7. composer不成功的原因
  8. 平扫加重建什么意思_在这款“奸商模拟器”里,帮助战场老兵重建家园吧!
  9. Diskpart命令安装系统小结
  10. angular引用bootstrap_angular怎么引入bootstrap?
  11. SIGTERM等信号含义
  12. Oracle查询优化改写技巧与案例总结一
  13. 玩通了这4本书,也就掌握了SEO的精髓了
  14. 电气专业需要考什么计算机证书吗,电气自动化专业可以考什么证书
  15. 视频截取图片帧工具(可免费使用)
  16. Flutter 学习与性能优化总结
  17. 访问共享计算机的用户名和密码怎么设置,Win7系统下共享文件夹怎么设置账号密码...
  18. zabbix 参数 脚本_zabbix 自定义脚本短信报警
  19. C1041: 无法打开程序数据库“xxx.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS
  20. 操作系统知识点总结和题集大杂烩

热门文章

  1. 人工智能机器学习论文库/论文目录获取
  2. 计算机---网络基础小知识点11.14
  3. 计算机最基础软件怎么应用程序,如何解决Win7系统运行软件就会提示Microsoft基础类应用程序已停止工作-电脑自学网...
  4. 复旦大学计算机学硕,复旦大学软件学院不再招学硕,名额调整到计算机,专硕保持不变!...
  5. \u类型的汉字编码问题
  6. Python 异步 async/await(进阶详解)
  7. 香橙派OrangePi 4 LTS开发板通过Mini PCIE连接SATA硬盘的操作方法
  8. Wfuzz模糊测试工具-能模糊的地方都能模糊
  9. 归并排序-Golang
  10. 全球销量第一iPhone 11为何能打败安卓手机?