信息搜索 - 华为机试真题题解

考试平台: 时习知

分值: 100分(第一题)

考试时间: 两小时(共3题)

alt

题目描述

请你设计一个程序,在给定消息中,搜索是否存在关心的信息。消息是有固定格式,具体格式如下:

  • 消息为字符串,以TLV格式存储 (即Tag+Length+Value方式),T占两个字符,L占两个字符,V即为指定长度L的字符串,其中T和L的每个字符均为0到9的数字字符,一个消息中可以有多个TLV,但每个TLV的Tag不能重复;
  • 一个消息中可以存在多个TLV,但不会嵌套TLV;
  • 消息格式可能不正确,即不符合给定格式规范,如:不是TLV格式(T和L不是数字字符)、Value按照Len指定的长度计算超过了字符串末尾、Tag重复等场景。

示意说明:

并列的TLV格式(本题中只存在这种场景)

alt

说明:

  • 对于给定待查找的消息,只在value中查找匹配 (区分大小写)Tag和Length不是消息内容,只是标记,如果在value中能查到该消息,输出对应TLV的Tag;
  • 如果存在多个TLV都包括待查找的字符串,则只输出最后一个TLV的Tag;
  • Length可以为0,如2200是一个合法的TLV单元。

输入

输入信息为两行字符串

第一行:TLV消息字符串,总长度范围为[1,1000]。

第二行:待查找的字符串

输出

输出三个字符串形式信息,中间以空格间隔

  1. 给定消息是否格式合法。合法消息输出字符串true,非法输出字符串false;
  2. 给定消息存在几个TLV单元。如果消息格式合法,按照实际TLV个数输出,如果消息格式非法,则输出0;
  3. 待查找的字符串所在的Tag(如果多个TLV均含有对应消息,返回最后一个TLV的Tag),如果消息非法或者合法消息中未找到字符串则输出字符串null。

示例1

输入:
2202ab23042223
22

输出:
true 2 23

解释: 
2202ab23042223是TLV格式,存在2个TLV单元,分别为:2202ab和23042223,给定22串在第二个TLV的Value中能找到,对应Tag为23

示例2

输入:
2202ab2304aaa
22

输出:
false O null

解释: 
给定字符串不是合法的TLV格式,第二个TLV单元不对,Len为04,但是对应Value为aaa,长度为3,不匹配所以输出为false0

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

🔥笔试编程真题宝典💯 文章被收录于专栏

📕分享大厂机试真题深度剖析核心考点,助你速通面试。

全部评论

相关推荐

点赞 评论 收藏
转发
2 1 评论
分享
牛客网
牛客企业服务