文章目录

  • 题目介绍
  • 题目解答
    • 解题思路
    • 算法实现
    • 运行截图

题目介绍

题目描述

  • 为了提升数据传输的效率,会对传输的报文进行压缩处理。
  • 输入一个压缩后的报文,请返回它解压后的原始报文。
  • 压缩规则: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;
}

运行截图

华为机试:报文解压缩相关推荐

  1. 华为机试真题 javascript和java 报文解压缩 100%通过

    前言 <华为机试真题>专栏为华为OD机试真题,源码包含多种语言. 如果找不到想要的考题 ,或者需要最新考题的答案,请进行留言机试题目,[注:留言考题请注明机试的时间] java版.java ...

  2. 华为机试真题分类汇总

    1. 字符串 类别 题目 知识点 题目分值 / 难度 字符串 [华为机试真题 JAVA]TLV解析Ⅰ-100 字符串分隔.拼接.搜索 100/中等 字符串 [华为机试真题 JAVA]寻找相同子串-10 ...

  3. 关于华为机试会不会考原题Od的问题?

    实证一下华为机试可能会考到原题吧. 都是扒的2022年下半年的牛客上的面经记录,里面有机试题的分享. 牛客网讨论区2022下半年的帖子,基本上是实锤的. 注意:牛客网上的是练习题,和考试真题是不一样的 ...

  4. 【华为机试】死记硬背没思路?一般人我劝你还是算了吧

    大家好,我是哪吒. 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题. 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧.B卷新题库 ...

  5. 【华为机试 Python实现】华为机试题集合(已更新171篇)

    文章目录 新手指引 数据结构基础 华为机试真题系列 牛客网华为机试系列 Python 八股文系列 <华为机试真题详解>专栏定价99.9 包含 <华为机试真题>的所有题目. 包含 ...

  6. [华为机试真题][2014]62.去除重复字符并排序

    题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...

  7. 牛客网--华为机试在线训练10:字符个数统计

    牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...

  8. 牛客网–华为机试在线训练9:提取不重复的数

    牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...

  9. 牛客网–华为机试在线训练8:合并表记录

    牛客网–华为机试在线训练8:合并表记录 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个 ...

  10. 牛客网–华为机试在线训练7:取近似值

    牛客网–华为机试在线训练7:取近似值 题目描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值.如果小数点后数值大于等于5,向上取整:小于5,则向下取整. 输入描述: 输入一个正浮点数值 输 ...

最新文章

  1. java二叉树镜像_给定一个二叉树,检查它是否是镜像对称的。
  2. cnn stride and padding_卷积神经网络(CNN) 第 4 课(上)
  3. C++中 char *s 和 char s[] 的区别
  4. nginx负载均衡基于ip_hash的session粘帖
  5. 寿险的精算现值(EPV)
  6. 谷歌EfficientNet缩放模型,PyTorch实现出炉,登上GitHub热榜丨Demo可用
  7. MATLAB实现智能优化算法
  8. SQL server 2008 安装教程
  9. 查看VS2017编译器 cl.exe 位置
  10. Python数学建模入门【1】
  11. 2021年PMP考试模拟题10(含答案解析)
  12. linux wget 安装包,linux系统下安装wget。
  13. 二进制,十进制,十六进制转化
  14. 虚拟机访问本地mysql_本地访问虚拟机oracle数据库的尝试
  15. 台式计算机usb口不能用,电脑USB接口没反应如何解决教程
  16. 差异表达基因热图怎么看_基因表达谱热图绘制
  17. 专有名词collect
  18. 【毕业设计_课程设计】手写数字识别系统的设计实现(源码+论文)
  19. python基础学习的书籍
  20. 「翻译」一个成功的 Git 分支模型

热门文章

  1. html图片多热点怎么弄,CSS学习笔记(十五) 使用map标签实现单图多热点
  2. python中浮点数的表示方法_很好地在python中表示浮点数
  3. clip预训练模型综述
  4. 怀旧服最新pve服务器,魔兽世界怀旧服pvp和pve服务器有什么区别 怀旧服服务器大区介绍...
  5. Twilio短信发送 twilio.base.exceptions.TwilioRestException:?[49mhttps://www.twilio.com/docs/errors/21408
  6. 三年级英语上册复习资料(新版陕旅版)
  7. 三种获得自动生成主键的方法,getGeneratedKeys,专用SQL和可更新的结果集
  8. 人生的路,每一步都算数
  9. 人类的悲欢虽不相通,但情感分析模型读得懂
  10. 知识付费项目,无本生意,月入1万+,最适合小白操作的项目