华为机试:报文解压缩
文章目录
- 题目介绍
- 题目解答
- 解题思路
- 算法实现
- 运行截图
题目介绍
题目描述
- 为了提升数据传输的效率,会对传输的报文进行压缩处理。
- 输入一个压缩后的报文,请返回它解压后的原始报文。
- 压缩规则:n[str],表示方括号内部的 str 正好重复 n 次。
- 注意 n 为正整数(0 < n <= 100),str只包含小写英文字母,不考虑异常情况。
输入描述:
输入压缩后的报文:
1)不考虑无效的输入,报文没有额外的空格,方括号总是符合格式要求的;
2)原始报文不包含数字,所有的数字只表示重复的次数 n ,例如不会出现像 5b 或 3[8] 的输入;
输出描述:
解压后的原始报文
注:
1)原始报文长度不会超过1000,不考虑异常的情况
示例 1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
3[k]2[mn]
输出
kkkmnmn
说明
k 重复3次,mn 重复2次,最终得到 kkkmnmn
示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
3[m2[c]]
输出
mccmccmcc
说明
m2[c] 解压缩后为 mcc,重复三次为 mccmccmcc
题目解答
解题思路
这个题目更像是模拟类型的题目,思路很简单,题目怎么说,代码怎么写。
3[k]2[mn]
3[m2[c]]
3[m2[c]]4[d]
思路如下,用栈来存储[
的下标,当遇到[
的时候将其下标压入栈,遇到]
的时候就开始操作了。
第一,把前面的数字提取出来,比如2[
中的2。
第二,把前面的字符串提取出来,比如m2[
中的m。
第三,把[]
中间的字符串提取出来,这里要分情况讨论,当是内嵌3[m2[m3[m2[c]]]]
的时候,这个
在最内层的时候,需要自己手动提取,当不是最内层的时候,就要依赖上一层得到的结果。
算法实现
代码实现
#include <limits.h>#include <algorithm>
#include <cmath>
#include <iostream>
#include <map>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
class Solution {public:void getdata(string& frontstr, int& nums, string s, int start) {int i = 0;int j = 0;string tempnum;for (i = start - 1; i >= 0; i--) {if (s[i] == ']' || s[i] == '[') {break;}}for (j = i + 1; j < s.size(); j++) {if (s[j] < 'a' || s[j] > 'z') {break;}frontstr.push_back(s[j]);}for (int l = j; l < s.size(); l++) {if (s[l] == '[') {int temp = atoi(tempnum.c_str());nums = temp;break;}tempnum.push_back(s[l]);}}string minWindow(string s) {stack<int> st;string result = "";string res = "";for (int i = 0; i < s.size(); i++) {if (s[i] == '[') {st.push(i);continue;}if (s[i] == ']') { //遇到]开始操作int start = st.top();st.pop();int end = i;string frontstr;int nums;getdata(frontstr, nums, s, start); //提取[前面的数字,字符串if (res.empty()) { //如果是最内层,需要手动提取res = s.substr(start + 1, end - start - 1);}string tempres = "";for (int i = 0; i < nums; i++) {tempres += res;}res = frontstr + tempres;if (st.empty()) { //栈道为空,说明一个内嵌[]结束,需要将res清空,来迎接下一个内嵌result += res;res = "";}}}return result;}
};
int main() {Solution a;string test;cin >> test;cout << a.minWindow(test) << endl;return 0;
}
运行截图
华为机试:报文解压缩相关推荐
- 华为机试真题 javascript和java 报文解压缩 100%通过
前言 <华为机试真题>专栏为华为OD机试真题,源码包含多种语言. 如果找不到想要的考题 ,或者需要最新考题的答案,请进行留言机试题目,[注:留言考题请注明机试的时间] java版.java ...
- 华为机试真题分类汇总
1. 字符串 类别 题目 知识点 题目分值 / 难度 字符串 [华为机试真题 JAVA]TLV解析Ⅰ-100 字符串分隔.拼接.搜索 100/中等 字符串 [华为机试真题 JAVA]寻找相同子串-10 ...
- 关于华为机试会不会考原题Od的问题?
实证一下华为机试可能会考到原题吧. 都是扒的2022年下半年的牛客上的面经记录,里面有机试题的分享. 牛客网讨论区2022下半年的帖子,基本上是实锤的. 注意:牛客网上的是练习题,和考试真题是不一样的 ...
- 【华为机试】死记硬背没思路?一般人我劝你还是算了吧
大家好,我是哪吒. 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题. 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧.B卷新题库 ...
- 【华为机试 Python实现】华为机试题集合(已更新171篇)
文章目录 新手指引 数据结构基础 华为机试真题系列 牛客网华为机试系列 Python 八股文系列 <华为机试真题详解>专栏定价99.9 包含 <华为机试真题>的所有题目. 包含 ...
- [华为机试真题][2014]62.去除重复字符并排序
题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...
- 牛客网--华为机试在线训练10:字符个数统计
牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...
- 牛客网–华为机试在线训练9:提取不重复的数
牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...
- 牛客网–华为机试在线训练8:合并表记录
牛客网–华为机试在线训练8:合并表记录 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个 ...
- 牛客网–华为机试在线训练7:取近似值
牛客网–华为机试在线训练7:取近似值 题目描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值.如果小数点后数值大于等于5,向上取整:小于5,则向下取整. 输入描述: 输入一个正浮点数值 输 ...
最新文章
- java二叉树镜像_给定一个二叉树,检查它是否是镜像对称的。
- cnn stride and padding_卷积神经网络(CNN) 第 4 课(上)
- C++中 char *s 和 char s[] 的区别
- nginx负载均衡基于ip_hash的session粘帖
- 寿险的精算现值(EPV)
- 谷歌EfficientNet缩放模型,PyTorch实现出炉,登上GitHub热榜丨Demo可用
- MATLAB实现智能优化算法
- SQL server 2008 安装教程
- 查看VS2017编译器 cl.exe 位置
- Python数学建模入门【1】
- 2021年PMP考试模拟题10(含答案解析)
- linux wget 安装包,linux系统下安装wget。
- 二进制,十进制,十六进制转化
- 虚拟机访问本地mysql_本地访问虚拟机oracle数据库的尝试
- 台式计算机usb口不能用,电脑USB接口没反应如何解决教程
- 差异表达基因热图怎么看_基因表达谱热图绘制
- 专有名词collect
- 【毕业设计_课程设计】手写数字识别系统的设计实现(源码+论文)
- python基础学习的书籍
- 「翻译」一个成功的 Git 分支模型
热门文章
- html图片多热点怎么弄,CSS学习笔记(十五) 使用map标签实现单图多热点
- python中浮点数的表示方法_很好地在python中表示浮点数
- clip预训练模型综述
- 怀旧服最新pve服务器,魔兽世界怀旧服pvp和pve服务器有什么区别 怀旧服服务器大区介绍...
- Twilio短信发送 twilio.base.exceptions.TwilioRestException:?[49mhttps://www.twilio.com/docs/errors/21408
- 三年级英语上册复习资料(新版陕旅版)
- 三种获得自动生成主键的方法,getGeneratedKeys,专用SQL和可更新的结果集
- 人生的路,每一步都算数
- 人类的悲欢虽不相通,但情感分析模型读得懂
- 知识付费项目,无本生意,月入1万+,最适合小白操作的项目