LeetCode-笔记-394. 字符串解码

394. 字符串解码

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

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

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

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

示例 1:

输入:s = "3[a]2[bc]"
输出:"aaabcbc"

思路递归:

从头开始遍历字符串,若开始遇到正常字符,则添加在字符串ss里添加,即ss.push_back();判断是否为数字,isdigit,若是数字字符,进入循环判断接下来是不是字符,计算数值大小x。若不是数字则addr位置加一。进入递归,递归包含当前位置,与初始字符串。递归重复前面判断,遇到’]'字符返回字符串。具体代码如下:

class Solution {public:string decode(int &i,string _s){string ss;int L=_s.size();int x=0;for(;i<L;++i){if(isdigit(_s[i])) {x=_s[i]-'0';i++;while(isdigit(_s[i])){int y=_s[i]-'0';x=x*10+y;//cout<<x<<endl;i++;}i++;string s_=decode(i,_s);//cout<<s_<<endl;for(int j=0;j<x;++j){//cout<<ss<<endl;ss+=s_;//cout<<ss<<endl;}}else if(_s[i]==']'){//cout<<ss<<endl;return ss;}else{ss.push_back(_s[i]);}}return ss;}string decodeString(string s) {if(s.find('[')==-1) return s;//递归尝试string ss;int L=s.size();int x=0;for(int i=0;i<L;++i){if(isdigit(s[i])) {x=s[i]-'0';i++;while(isdigit(s[i])){int y=s[i]-'0';x=x*10+y;//cout<<x<<endl;i++;}i++;string s_=decode(i,s);for(int j=0;j<x;++j){ss+=s_;}}else if(s[i]==']'){return ss;}else{ss.push_back(s[i]);}}return ss;}
};

LeetCode-笔记-394. 字符串解码相关推荐

  1. leetcode系列-394. 字符串解码

    题目描述:给定一个经过编码的字符串,返回它解码后的字符串.编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次. 注意 k 保证为正整 ...

  2. 【LeetCode】【HOT】394. 字符串解码(栈)

    [LeetCode][HOT]394. 字符串解码 文章目录 [LeetCode][HOT]394. 字符串解码 package hot;import java.util.LinkedList;pub ...

  3. 【LeetCode笔记】394. 字符串解码(Java、递归、栈)

    文章目录 题目描述 思路 & 代码 更新版 题目描述 开心!!独立思考字符串题,还AC了,成就感满满 XD 难点应该是在于嵌套括号,那么这里实际上还要考虑到一个类似于括号匹配的事情 谈到括号, ...

  4. LeetCode 394. 字符串解码(栈)

    1. 题目 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正 ...

  5. leetcode 394.字符串解码 dfs

    原题链接 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string], 表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正 ...

  6. leetcode 394. Decode String | 394. 字符串解码(用栈做表达式转换)

    题目 https://leetcode.com/problems/decode-string/ 题解 思路来源于中缀表达式,具体过程见下图草稿. 逻辑上不难,这题的槽点在 StringBuilder ...

  7. ·394.字符串解码

    题目描述 注意 k 保证为正整数.你可以认为输入字符串总是有效的:输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的. 此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k , ...

  8. 394. 字符串解码

    方法 算法思想:辅助栈, 时间复杂度: 空间复杂度: 边界条件: 补充知识: class Solution { public String decodeString(String s) { Strin ...

  9. 【每日一题】字符串解码

    文章目录 题目描述 题解 递归 利用栈 题目描述 394. 字符串解码 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 enc ...

最新文章

  1. [学习笔记]最小圆覆盖
  2. VS2008系统开发背景图片的添加及注意事项
  3. linux内核编译如何选择cpu类型,Ubuntu内核编译和CPU Hot-Plug特性配置全过程及遇到问题记录...
  4. MFC中CString类字符串与长整型、浮点型、字符数组char数据之间的相互转换
  5. cmake linux 交叉编译,[CMake]CMake设置arm-linux-gcc交叉编译器
  6. Oracle 判断CLOB字段是否为null
  7. 2020-11-05 转载 国内配置Electron开发环境的正确方式
  8. linux的ps命令
  9. solr html显示,在SOLR中,如何执行索引. html 文件_solr_开发99编程知识库
  10. bearer token头_接口认证方式:Bearer Token
  11. 第 7 章 Neutron - 078 - 实践 Neutron 前的两个准备工作
  12. qt的qmap根据key进行归类,汇总
  13. 双目视觉摄像机的参数标定参考坐标系介绍
  14. win7 IE中使用svg时利用symbol的方式出现卡死现象
  15. 智能手机与pc计算机的区别,手机cpu和电脑cpu有什么区别
  16. Oracle 12C Sharding分片数据库
  17. “生死看淡”的雷军要造车,这对中国的汽车产业意味着什么?
  18. hostent实例详解
  19. 如何将电脑文件自动备份到u盘?
  20. The 19th Zhejiang Provincial Collegiate Programming Contest

热门文章

  1. Galaxy 生信平台(四):邮件与管理员配置
  2. Nature子刊 | 翟冰等造血干细胞移植中的肠道真菌菌群动态变化与临床结果分析(招聘博后、助研)...
  3. MPB:中科院城环所杨军组-​​​基于DNA宏条形码的水体浮游细菌群落测序建库方法...
  4. 上传数据,直接分析,这才是真正的生物云
  5. Cell:肠道菌群促进帕金森发生ParkinsonDisease
  6. TM:宿主-细菌界面的MicroRNA:宿主防御或细菌攻击
  7. 扩增子统计绘图7三元图
  8. R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix)、稠密数据(dense matrix)、xgb.DMatrix数据聚合
  9. pandas移除dataframe字符串数据列中的后N个字符(remove the last n characters from values from column of dataframe)
  10. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(水平带状图、垂直带状图、抖动程度配置)实战