腾讯2020校招第一次笔试第1题

2023-11-13

    小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q
发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字
符串S将会压缩为[m|S](m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压
缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么? 

输入描述:
输入第一行包含一个字符串s,代表压缩后的字符串。
S的长度<=1000;
S仅包含大写字母、[、]、|;
解压后的字符串长度不超过100000;
压缩递归层数不超过10层;

输出描述:
输出一个字符串,代表解压后的字符串。
示例1
输入
HG[3|B[2|CA]]F
输出
HGBCACABCACABCACAF
说明
HG[3|B[2|CA]]F−>HG[3|BCACA]F−>HGBCACABCACABCACAF

这个题,是比较容易想到用栈来处理的,因为涉及到括号[]内的内容先处理,这是很显然应该用栈的。而想要把[]这一段内容写成一般的字符串,也是不难的。这道题最难处理的地方在于,[]这一段字符串写成一般形式以后,怎么保存下来。如果想要存到原来的字符串,因为[]写成一般形式后,长度可能发生变化,因此需要移动原来的字符串,这是很不方便的;而如果保存到一个新的字符串里面,就会出现一个问题:这段新的字符串,可能又在另一对[]里面,这个时候需要看原来的字符串和新的字符串,这也是很难操作的。

当时写这道题的时候,这两种办法都想到了,但是都无法实现,后来看了别人的解法,是把原来的字符串一个一个字符地存到栈里面,等遇到’]‘的时候,就把字符从栈中一个一个拿出来直到遇到’[’,然后就开始把这一段[]的内容写成一般形式(正如前面所说,这是很容易想到的)。关键是,写成一般形式以后,再度写回栈里(这是没那么容易想到的)。实现的代码如下:

#include <iostream>
#include <string>
#include <stack>
using namespace std;

int main()
{
    string str;
    while (cin >> str)
    {
        stack <char> sta;
        string ans;
        for (int i = 0; i < str.size(); ++i)
        {
            if (str[i] != ']')
            {
                sta.push(str[i]);    //没遇到']',就要把字符压入栈
            }
            else
            {
                char tmp_c = sta.top();
                string tmp_s;
                while (tmp_c >= 'A' && tmp_c <= 'Z')    
                	//把[m|S]中的S提取到tmp_s
                {
                    tmp_s = tmp_c + tmp_s;
                    sta.pop();
                    tmp_c = sta.top();
                }
                
                if (!sta.empty())    //去掉'|'
                {
                    sta.pop();
                    tmp_c = sta.top();
                }
                
                int n = 0, cnt = 1;    
                while (tmp_c >= '0' && tmp_c <= '9')    
                	//把[m|S]中的m提取到n,cnt为位数(因为m可能不止个位)
                {
                    n += (tmp_c - '0') * cnt;
                    cnt *= 10;
                    sta.pop();
                    tmp_c = sta.top();
                }
                
                if (!sta.empty())    //去掉'['
                {
                    sta.pop();
                }
                
                while (n--)    //把tmp_s压入栈n次
                {
                    for (auto it : tmp_s)
                    {
                        sta.push(it);
                    }
                }
                
            }
        }
        while (!sta.empty())
        {
            ans = sta.top() + ans;
            sta.pop();
        }
        cout << ans << endl;
    }
    return 0;
}

更多精彩内容,敬请期待。

2020.2.27

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

腾讯2020校招第一次笔试第1题 的相关文章

  • Ubuntu部署OpenStack zed版本neutron报错:Feature ‘linuxbridge‘ is experimental and has to be explicitly enab

    系统版本 Ubuntu 22 04 1 LTS OpenStack版本 zed 组件 Neutron 组件报错内容 Feature linuxbridge is experimental and has to be explicitly e
  • GLSL中texture3D获得的值大小

    使用OpenGL的glTexImage3D 获得纹理数据 再在片元着色器对数据进行处理texture3D 得到的数据已被压缩到0 1 openGL函数glTexImage3D导入数据后 在GLSL中 数据被进行了压缩 glTexImage3
  • python3GUI--音乐播放器(精简版)By:PyQt5(附下载地址)

    文章目录 一 前言 二 预览 1 主界面 2 歌单页 3 歌词页 4 播放列表 5 mini 6 设置 三 心得 1 解耦 2 体验优化 3 歌词显示 4 双击歌曲后发生什么 四 总结 一 前言 传送门 1 python3GUI 打造一款音
  • 关于Linux下的pid文件

    1 pid文件的内容 用cat命令查看 可以看到内容只有一行 记录了该进程的ID 2 pid文件的作用防止启动多个进程副本 3 pid文件的原理进程运行后会给 pid文件加一个文件锁 只有获得pid文件 固定路径固定文件名 写入权限 F W
  • Elasticsearch聚合分析、mget批量查询、bulk批量更新

    Elasticsearch分组集合 一 分组聚合操作 开启fielddata属性 1 在ElasticSearch中默认fielddata默认是false的 因为开启Text的fielddata后对内存的占用很高 如果进行聚合查询时候就需要
  • Redfish协议测试工具–Postman

    1 工具和资料获取 2 简单使用说明 1 GET类举例 2 PATCH类举例 3 常见命令 1 工具和资料获取 Postman工具获取 服务器Redfish接口说明文档 使用前必读接口文档中 适用的产品 查看自己的服务器是否支持此协议 2
  • 简单sql注入

    报错注入找列数 确定为16 联合查询找回显点 查询数据库和数据库版本 版本为5 0以上 需要对查询的内容加密否则报错 结果不是需要的 查询所有的表 获得表名cms users 获得字段usename password 得到账号密码
  • 用java代码验证char类型数据占几个字节

    char为字符型数据 储存单个字符 但阿拉伯数字 英文字母 标点符号等皆为字符型数据 占用字节看似错综复杂 但是char也为脱离计算机基本 二进制储存机制 char本质上内存中皆存储字符编码 1 127为ASCII码 也就是常用的字符 但在
  • 关于iOS9中的App Transport Security(ATS)相关说明及适配

    iOS9中新增App Transport Security 简称ATS 特性 主要使到原来请求的时候用到的HTTP 都转向TLS1 2协议进行传输 这也意味着所有的HTTP协议都强制使用了HTTPS协议进行传输 原文如下 App Trans
  • VS2010:error C2061: 语法错误

    实例 类名 类中包含的头文件 point iostream line point flat flat line 输出错误 error C2061 语法错误 标识符 flat 解决办法 前置声明 line h class flat
  • 区块链读书笔记04 - 以太坊

    区块链读书笔记04 以太坊 以太坊 Ethereum 以太坊关键概念 账户 Account 交易 Transaction 消息 Messsage Gas 合约 contract 以太坊虚拟机 EVM DApp 去中心化应用 以太坊架构 以太
  • 网站域名服务器加密,网站域名利用https防劫持方法

    原标题 网站域名利用https防劫持方法 公共 DNS HttpDNS 的部署成本过高 并且具有一定的技术门槛 在面对无孔不入的 DNS 劫持时有时候其实有点力不从心 那么如何简单有效低成本的加强域名防劫持呢 只需要给网站开启 HTTPS
  • mysql jdbc 多数据源_springboot多数据源(oracle、mysql)

    1 application properties配置 server port 8085 server tomcat uri encoding utf 8 MySQL spring datasource primary driver clas
  • java基于BufferedImage进行图片数字识别预处理

    参考文章链接 1 https blog csdn net kobesdu article details 8142068 2 https blog csdn net fjssharpsword article details 5265184
  • 从此刻开始走进HTML的大门!!!

    文章目录 什么是HTML呢 HTML的结构又是怎么样的呢 学习HTML的标签 标题标签 段落标签 文本格式化标签 换行标签 字符实体 容器标签 图片标签 超链接标签 列表标签 什么是HTML呢 HTML 英文全称是 Hyper Text M
  • kmeans算法和kmeans++

    kmeans算法及其优化改进 kmeans聚类算法 算法原理 kmeans的算法原理其实很简单 我用一个最简单的二维散点图来做解释 如上图 我们直观的看到该图可聚成两个分类 我们分别用红点和蓝点表示 下面我们模拟一下Kmeans是怎么对原始
  • 桌面研究-数据源

    文章目录 1 各国每年人口统计表 2 各国年龄结构表 3 国家简介 4 城镇化率 5 美国房屋统计数据 6 各国教育水平 7 住房类型 8 家庭结构 家庭人数 9 恩格尔系数 10 IMF 人均GDP PPP人均GDP 1 各国每年人口统计
  • 自动化测试需要学什么?二十八岁功能想转自动化现实吗?

    先回答一下后面那个问答 二十八岁还能从功能转自动化吗 很多接触软件测试都是从功能测试开始的 但是功能测试的薪资会比自动化少很多 所以就想要要学习自动化 从功能测试转到做自动化 其实这是完全来的及的 花上几个月时间学习自动化测试 造福以后 这

随机推荐

  • 智能化里面计算机网络设计思路,浅谈云机房网络的建设和维护及思路分析

    徐振宇 张欣 摘要 现代机房网络管理过程中 云技术的应用效果非常的显著 该文先对机房中的云技术应用实践中进行分析 并在此基础上就云机房网络的建设及其维护和设计思路 谈一下个人的观点和认识 以供参考 关键词 机房 云技术 网络建设 维护 设计
  • Blob 文件下载对应的常见 MIME 类型列表

    Blob 对象表示一个不可变 原始数据的类文件对象 它的数据可以按文本或二进制的格式进行读取 也可以转换成 ReadableStream 来用于数据操作 在 JS 中通常使用 Blob 进行文件下载保存 new 转换过程中需要指定下载文件
  • BurpSuite Proxy 给代理设置上层代理

    1 简单描述 正常情况而言 使用BurpSuite时数据包的经过流程为 浏览器 BurpSuite Repeater Intruder gt BurpSuite Proxy gt 目标服务器 这个时候其实还是本机发出的流量 我们想让流量由其
  • vue环境变量配置——process.env(详细)

    目录 一 背景 二 配置环境的实现原理 三 使用步骤 3 1安装依赖 3 2创建 env dev 和 env prod两个文件 3 3设置项目启动时默认的环境 3 4查看环境是否配置成功 一 背景 在用vue框架时 经常用到两种环境 一种是
  • 智能指针auto_ptr

    智能指针 auto ptr 这个名字听起来很酷是不是 其实auto ptr 只是C 标准库提供的一个类模板 它与传统的new delete控制内存相比有一定优势 但也有其局限 本文总结的8个问题足以涵盖auto ptr的大部分内容 1 au
  • DVWA-Brute Force

    Brute force 暴力破解 是一种试图通过尝试所有可能的组合 通常是密码 来获取敏感信息或破解加密的技术或方法 这种攻击方法通常被用来破解密码 对系统进行入侵或访问受限资源 暴力破解攻击的原理是通过迭代尝试各种可能的组合 例如密码字典
  • 2023前端面试题------JS 面试题(1)

    2023前端面试题 JS面试题 三 JS高频面试题 1 介绍JS有哪些内置对象 2 如何最小化重绘 repaint 和回流 reflow 3 Javascript作用域链 4 数据请求 5 跨域和同源策略 6 面向对象 7 闭包 8 数组去
  • rtp协议分析

    感谢原作者 http blog csdn net rootusers article details 41864387 网络模型 网络通信分为7层 OSI 是一个理论模型 由高到低分别是 应用层 文件传输 电邮 文件服务等 HTTP Tel
  • 【华为OD机试】响应报文时间【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 IGMP 协议中 有一个字段称作最大响应时间 Max Response Time HOST收到查询报文 解折出 MaxResponsetime 字段后 需要在 0 M
  • wps插入图片显示不全、混乱

    问题如下 原因 格式混乱 解决办法 1 统一格式 使用格式刷统一文档的格式 2 Ctrl A 全选 重新选择行距 3 重新粘贴图片 选择嵌入型
  • 从0到1框架搭建,Python+Pytest+Allure+Git+Jenkins接口自动化框架(超细整理)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • Grokking the System Design Interview: 如何应对系统设计面试

    拥有良好的系统设计能力 是一个优秀程序员的必要素质 当然更重要的是 越来越多的公司在面试中考察系统设计能力 尤其是外企巨头 如谷歌 亚马逊 微软等 这些公司对于社招的软件工程师往往有这方面的要求 但是系统设计和算法题不一样 它考察的是程序员
  • Unit sshd.service could not be found.

    错误原因 刚安装了Ubuntu18 04系统 用Xshell连接服务器失败 因为服务器没有开启 可被远程连接的功能 指令输入 systemctl status sshd 然后出现了标题上的错误 解决方法 一 检测bug原因 ps e gre
  • 接口自动化入门-TestNg

    目录 1 TestNg介绍 2 TestNG安装 3 TestNG使用 3 1 编写测试用例脚本 3 2 创建TestNG xml文件 1 创建testng xml文件 2 修改testng xml 4 测试报告生成 1 TestNg介绍
  • Flutter悬浮窗组件之实现快捷换肤、切换语言等开发调试功能模块

    一 最近开发一个App具有黑白两个主题和切换语言的功能 所以在开发的时候一个页面总是要不断的去切换主题和语言来查看功能是否正常 为了提高这个开发效率突然想到可以在应用上增加一个悬浮窗组件然后实现主题切换和语言切换的功能 这样在任意一个页面就
  • JavaScript数据结构-树

    文章转自 JavaScript数据结构 树 我觉得这社会上 也不差钱好多人 可能好多人也不差权力 但是我觉得能得到这种满足的也不多 郭小平 lt 临汾红丝带学校校长 gt 树是计算机科学中经常用到的一种数据结构 树是一种非线性的数据结构 以
  • Makefile的两种编译方法——原地编译和单独输出文件夹编译

    1 原地编译 编译代码时默认是原地编译 原地编译就是编译生成的 o文件和相应的 c文件是在同一目录的 原地编译比较简单 但是会污染源码 目录里会多出生成的 o文件 并且编译不同配置的目标文件 都要先清除之前的 o文件 2 单独输出文件夹编译
  • 【Python爬虫与数据分析】爬虫Json数据解析

    目录 一 Json文件数据解析 二 Json数据包解析获取图片资源 三 Json数据包解析获取视频资源 一 Json文件数据解析 json字符串 通常类似python数据类型中的列表和字典的结合 也可能是单独的列表或者字典格式 通常可以通过
  • Win10:修改电脑桌面路径

    Win10 修改电脑桌面路径 1 win R进入运行 输入 regedit 2 进入 注册表编辑器 3 依次打开 HKEY CURRENT USER Software Miscrosoft Windows Explorer Uesr she
  • 腾讯2020校招第一次笔试第1题

    小Q想要给他的朋友发送一个神秘字符串 但是他发现字符串的过于长了 于是小Q 发明了一种压缩算法对字符串中重复的部分进行了压缩 对于字符串中连续的m个相同字 符串S将会压缩为 m S m为一个整数且1 lt m lt 100 例如字符串ABC