1.1我的解法与问题
1)如何得到重复的次数?
用isdigit()函数判断是否是数字
2)但是十位数百位数之类的又该如何解决呢?
3)如何判断字符串?
isalpha()函数来判断是否是字符
其他的就是符号
4)如何实现返回和重复的字符串添加?
开两个字符串,一个用于函数的最终的返回,一个用来添加重复的片段

上述分析存在的问题:
1)不能解决嵌套的问题
2)没有善用方括号

1.2他人的解法

string decodeString(string s) {vector<int> num(1,0);//当作栈用来存放要重复的数字的vector<string> ans;//当作栈用来存放要重复的字符的ans.push_back("");//预先放入一个空的字符串开辟位置为以后字符串的放入做铺垫int repeat = 0;int curr = 0;for(int i = 0; i < s.size();i++){if(isdigit(s[i]))repeat = repeat*10 + s[i] - '0';//为如何处理两位数纠结了很久,十进制的移动是通过数字的乘除来完成的else if(s[i] == '['){num.push_back(repeat);repeat = 0;ans.push_back("");curr++;}else if(isalpha(s[i])){ans[curr] += s[i];}else if(s[i] == ']'){for(int j = 0; j < num[curr];j++)ans[curr-1] += ans[curr];ans.pop_back();num.pop_back();curr--;}}return ans[0];}

感觉和括号表达式子算法差不多
1)开两个栈,其中一个存放数字,另外一个存放要重复的string片段
考虑到使用stack的出栈入栈较为麻烦,所以就用vector数组代替,并且使用curr来标记栈顶的位置
2)为什么这样子可行?
3[a2[c]] = 3*(a+2*©)写成括号表达式,可以发现括号表达式是从最里面开始算起,与这道题一致,并且在数字后面的字符串会附加到下一层的字符串,相当于加法

2021-06-12Leetcode394.字符串解码相关推荐

  1. Mculover666的博客文章导航(嵌入式宝藏站)(2021.06.17更新)

    一.MCU系列 1. 开发环境 [Keil MDK](一)Keil MDK 5.28 的下载.安装.破解 [Keil MDK](二)Keil MDK中芯片器件包的安装 [Keil MDK](三)Kei ...

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

    LeetCode-笔记-394. 字符串解码 394. 字符串解码 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encod ...

  3. PHP对Json字符串解码返回NULL的一般解决方案

    php对json字符串解码使用json_decode()函数,第一个参数传字符串,第二个参数若为true,返回array:若为false,返回object.如果返回NULL,说明报错,输出json_l ...

  4. [PHP]对Json字符串解码返回NULL的一般解决方案

    ---------------------------------------------------------------------------------------------------- ...

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

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

  6. C语言实现JSON字符串解码与编码(三)源代码

    申请/释放空间 因为JSON对象与字符串需要在堆上申请/释放空间,故定义2个函数指针变量来存在函数地址. static void* (*JSON_malloc)(size_t _Size);//申请空 ...

  7. 字符串解码(猿辅导笔试题数箱子)

    可以申请两个栈,一个存放数字一个存放字符.本题我们直接申请一个栈,数据类型设定为pair<int,string>.遍历原字符串时,遇到数字则计算保存到num中,遇到左括号 [ 则入栈,入栈 ...

  8. 2021.06.03邮票面值设计

    2021.06.03邮票面值设计 题目描述 给定一个信封,最多只允许粘贴 N 张邮票,计算在给定 K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值 MAX ...

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

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

  10. 2021.06.06家庭财经系统制作(2)

    show tables; 查看数据库里有什么表命令. 碰到mysql软件问题.比想象的难缠. 用之前的方式打不开黑框(鼠标单击 mysql5.7 ccommand line Client),黑框一闪而 ...

最新文章

  1. 基于redis的分布式任务管理
  2. Javascript实现浏览器菜单命令
  3. asp.net menu Operation aborted
  4. 小米为其他手机适配rom_让小米引以为傲的MIUI,为什么不再给其它手机适配了?...
  5. Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙
  6. QThread多线程编程分析
  7. 用户界面样式-鼠标样式(HTML、CSS)
  8. 第 7 章 Neutron - 073 - Service Plugin / Agent
  9. 大数据前端个人提升与团队规划
  10. h5 api-获得地理经纬度和异常处理
  11. PyS60开发环境搭建
  12. 班主任直接把奖学金名额给了我?就因为我用Python给她写了一个自动阅卷脚本
  13. 巨蟒django之CRM1 需求分析表结构设计注册登录验证
  14. 草履虫纳米机器人_《Nature》:草履虫大小的微型机器人:由激光驱动,未来可用于显微外科手术!...
  15. WIA的使用及自定义可拖拽大小的picturebox
  16. 前端代码调试:Webstorm调试js
  17. React-Native全球化语言切换工具库react-native-i18n
  18. 【5G核心网】5G概念以及名词缩写解释
  19. 微信小程序之movable-view的direction用法
  20. 转专业计算机常见的名词解释,迎鲜肉第9弹|大学生活必知名词解释

热门文章

  1. 工作流程管理软件的系统架构与功能
  2. Android架构组件-App架构指南
  3. 计算机基础知识(基础入门小白专属)
  4. NISP和CISP网络安全高级运维工程师需要掌握的应急响应有什么方向
  5. ResNet18识别CelebA数据集(Pytorch实战)
  6. Windows下kali子系统安装教程
  7. linux安装php及php扩展
  8. hid python uhf_简单的读写Python中的USB HID设备?
  9. adb命令之monkey使用
  10. SQL学习七、聚合函数