鱼C论坛

 找回密码
 立即注册
查看: 1837|回复: 0

[技术交流] C++刷leetcode(394. 字符串解码)【辅助栈】

[复制链接]
发表于 2020-4-16 12:53:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 糖逗 于 2020-5-8 17:40 编辑

题目描述:

  1. 给定一个经过编码的字符串,返回它解码后的字符串。

  2. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。

  3. 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。

  4. 此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。

  5. 示例:

  6. s = "3[a]2[bc]", 返回 "aaabcbc".
  7. s = "3[a2[c]]", 返回 "accaccacc".
  8. s = "2[abc]3[cd]ef", 返回 "abcabccdcdcdef".
复制代码


  1. #include<string>
  2. #include<iostream>
  3. #include<vector>
  4. #include <stack>

  5. using namespace std;

  6. string solution(string input){
  7.         stack<int> stack_int;
  8.         stack<string> stack_string;
  9.         int count = 0;
  10.         string res = "";
  11.         for(auto cha:input){
  12.                 if(cha == '['){
  13.                         stack_int.push(count);
  14.                         stack_string.push(res);
  15.                         res = "";
  16.                         count = 0;
  17.             continue;
  18.                 }
  19.                 if(cha == ']'){
  20.                         int number = stack_int.top();
  21.             stack_int.pop();
  22.             string temp;
  23.             for (int k = 0; k < number; k++){
  24.                 temp.append(res);
  25.             }

  26.             res = stack_string.top() + temp;
  27.             stack_string.pop();
  28.             continue;
  29.                 }
  30.                 if(cha >= '0' && cha <= '9'){
  31.                         count = 10*count + (cha - '0');
  32.                 }
  33.                 else{
  34.             res += cha;
  35.                        
  36.                 }
  37.         }
  38.         return res;
  39. }



  40.    
  41. int main(void){
  42.         string input;
  43.         cin >> input;
  44.         cout << solution(input) << endl;
  45.          

  46.         return 0;
  47. }
复制代码



参考链接:https://leetcode-cn.com/problems ... a-di-gui-fa-by-jyd/

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 14:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表