394. Decode String

2023-05-16

【题目】

  • Total Accepted: 10087
  • Total Submissions: 25510
  • Difficulty: Medium
  • Contributors: Admin

Given an encoded string, return it's decoded string.

The encoding rule is: k[encoded_string], where the encoded_string inside the square brackets is being repeated exactly k times. Note that k is guaranteed to be a positive integer.

You may assume that the input string is always valid; No extra white spaces, square brackets are well-formed, etc.

Furthermore, you may assume that the original data does not contain any digits and that digits are only for those repeat numbers, k. For example, there won't be input like 3a or 2[4].

Examples:


s = "3[a]2[bc]", return "aaabcbc".
s = "3[a2[c]]", return "accaccacc".
s = "2[abc]3[cd]ef", return "abcabccdcdcdef".

【解题】


 1 class Solution {
 2 public:
 3     string decodeString(string s) {
 4         stack<string> strs;
 5         stack<int> counts;
 6         string result = "";
 7         int cnt = 0;
 8         for (int i = 0; i < s.size(); i++) {
 9             if(s[i] <= '9' && s[i] >= '0') {
10                 cnt = cnt*10 + s[i] - '0';
11                 cout << "number = " << cnt << endl;
12             } else if (s[i] == '[') {
13                 cout << "[" << endl;
14                 counts.push(cnt);
15                 strs.push(result);
16                 result.clear();
17                 cnt = 0;
18             } else if (s[i] == ']') {
19                 int cur_cnt = counts.top();
20                 cout << "]" << " cur_cnt = " << cur_cnt << endl;
21                 counts.pop();
22                 for (int j = 0; j < cur_cnt; j++) {
23                     strs.top() += result;
24                 }
25                 result = strs.top();
26                 strs.pop();
27             } else {
28                 result += s[i];
29                 cout << "result += " << s[i] << endl;
30             }
31         }
32         return strs.empty()? result:strs.top();
33     }
34 };  

注意:

'['后记得要清空result,初始化cnt为0。

转载于:https://www.cnblogs.com/fqmai/p/6014631.html

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

394. Decode String 的相关文章

随机推荐

  • NEMA-0183(GPRMC GPGGA)详细解释

    NEMA 0183 GPRMC GPGGA 详细解释 nmea数据如下 xff1a GPGGA 121252 000 3937 3032 N 11611 6046 E 1 05 2 0 45 9 M 5 7 M 0000 77 GPRMC
  • [转]printf 函数实现的深入剖析

    研究printf的实现 xff0c 首先来看看printf函数的函数体 int printf const char fmt int i char buf 256 va list arg 61 va list char amp fmt 43
  • http_parser

    最近读了 http parser 的源码 xff0c 记录下 有意思的地方 xff1a 1 协议解析可以不完全解析完 xff0c 但是当前 parser 会记录解析状态 xff0c 这样可以继续解析 2 协议解析首要还是要了解协议本身 xf
  • linux 网络编程 3---(io多路复用,tcp并发)

    1 xff0c io模型 xff1a 阻塞io 非阻塞io io多路复用 xff0c 信号驱动io 阻塞Io与非阻塞io的转换 xff0c 可用fcntl 函数 include lt unistd h gt include lt fcntl
  • 计算机网络socket实验报告,计算机网络socket编程实验报告

    计算机网络socket编程实验报告 由会员分享 xff0c 可在线阅读 xff0c 更多相关 计算机网络socket编程实验报告 4页珍藏版 请在人人文库网上搜索 1 实课程名称实验项目名称实验时间 日期及节次 专业年级姓名验计算机科学与技
  • linux 内核重定位,linux内核netfilter实现url重定向

    include include 34 url redirect h 34 struct sk buff tcp newpack u32 saddr u32 daddr u16 sport u16 dport u32 seq u32 ack
  • can/socket can

    1 概念 参考 xff1a Linux CAN编程详解 can引脚 xff1a cn2 15 xff1a CAN1 H 19 CAN1 L 根据每组报文开头的 11 位标识符 扩展帧为29位标识符 CAN 2 0A 规范 解释数据的含义来决
  • C#不能在匿名方法、lambda表达式、查询表达式或本地函数中使用ref、Out或in参数

    报错信息 Error CS1628 C 不能在匿名方法 lambda表达式 查询表达式或本地函数中使用ref Out或in参数 Error CS1628 Cannot use ref out or in parameter xx insid
  • STL 智能指针

    转自 xff1a https blog csdn net k346k346 article details 81478223 STL一共给我们提供了四种智能指针 xff1a auto ptr unique ptr shared ptr和we
  • 【转】目前最常见的”无线通信(数据)传输技术“有哪些?

    近年来 xff0c 随着电子技术 计算机技术的发展 xff0c 无线通信技术蓬勃发展 xff0c 出现了各种标准的无线数据传输标准 xff0c 它们各有其优缺点和不同的应用场合 xff0c 本文将目前应用的 无线通信种类进行了分析对比 xf
  • 认证 (authentication) 和授权 (authorization) 的区别

    以前一直分不清 authentication 和 authorization xff0c 其实很简单 xff0c 举个例子来说 xff1a 你要登机 xff0c 你需要出示你的 passport 和 ticket xff0c passpor
  • stm32f407VE+enc28j60+lwip2.0.2

    407自带以太网mac模块 xff0c 一般外挂一个PHY芯片就可以实现以太网物理层 xff1b 以下是stm32f407VE 43 enc28j60 43 lwip2 0 2实现最基本的以太网通信功能 1 新建工程 xff0c 此处省略1
  • 关于步进电机的半流设置、衰减设置

    连接 xff1a https zhidao baidu com question 1668040896278315667 html 电流是电机运行的载体 xff0c 但电压的高低也直接影响到电流 xff0c 很多人使用步进电机存在误区 xf
  • 三十二、http与www服务介绍

    一 用户访问百度 xff08 www baidu com xff09 用户访问在url中输入地址后 xff0c 首先会访问本地的缓存和hosts文件 xff0c 如果没有 xff0c 会访问本地DNS xff0c 在就是根域和顶级域名等 x
  • UNIX网络编程卷1 - >环境搭建(ubuntu16.04)

    学习unp网络编程 xff0c 树上的例子均存在 include unp h xff0c 故需要对环境进行配置 1 到资源页下载 www unpbook com 2 解压并将unpv13e移动到相应的文件夹下 因为我是在windows电脑装
  • HTTP认证之基本认证——Basic(二)

    导航 HTTP认证之基本认证 Basic xff08 一 xff09 HTTP认证之基本认证 Basic xff08 二 xff09 HTTP认证之摘要认证 Digest xff08 一 xff09 HTTP认证之摘要认证 Digest x
  • 超声波雾化模块_超声波加湿器让果蔬保持新鲜

    水果和蔬菜的保鲜对于超市和餐饮业来说非常重要 保持蔬菜的新鲜度一直令人头疼 xff0c 因为蔬菜和水果的新鲜度直接影响客户的购买 因此 xff0c 为了有效地延长蔬菜水果的保鲜期 xff0c 喷洒蔬菜水果 xff0c 延长其保鲜期很重要 目
  • Visual Studio 内置宏的查看与使用

    C 43 43 工程 C 43 43 工程是最容易查看宏的 因为很多值的编辑 xff0c 都提供了宏的查看 C 工程 C 的工程 xff0c 不容易查看宏 因为很少提供宏的查看窗口 所以 xff0c 我这里给出总结就有必要了 NET Fra
  • STM32-OLED屏幕显示教程

    目录 1 OLED屏幕介绍 2 OLED屏幕显示一个点的思路 3 配置OLED屏幕 4 OLED显示字符串 5 OLED屏幕显示汉字 6 OLED屏幕显示图片 7 总结 我的上篇文章已经介绍过IIC协议 xff08 本篇文章不对IIC协议做
  • 394. Decode String

    题目 Total Accepted 10087Total Submissions 25510Difficulty MediumContributors Admin Given an encoded string return it 39 s