2021-06-12Leetcode394.字符串解码
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.字符串解码相关推荐
- Mculover666的博客文章导航(嵌入式宝藏站)(2021.06.17更新)
一.MCU系列 1. 开发环境 [Keil MDK](一)Keil MDK 5.28 的下载.安装.破解 [Keil MDK](二)Keil MDK中芯片器件包的安装 [Keil MDK](三)Kei ...
- LeetCode-笔记-394. 字符串解码
LeetCode-笔记-394. 字符串解码 394. 字符串解码 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encod ...
- PHP对Json字符串解码返回NULL的一般解决方案
php对json字符串解码使用json_decode()函数,第一个参数传字符串,第二个参数若为true,返回array:若为false,返回object.如果返回NULL,说明报错,输出json_l ...
- [PHP]对Json字符串解码返回NULL的一般解决方案
---------------------------------------------------------------------------------------------------- ...
- 【LeetCode】【HOT】394. 字符串解码(栈)
[LeetCode][HOT]394. 字符串解码 文章目录 [LeetCode][HOT]394. 字符串解码 package hot;import java.util.LinkedList;pub ...
- C语言实现JSON字符串解码与编码(三)源代码
申请/释放空间 因为JSON对象与字符串需要在堆上申请/释放空间,故定义2个函数指针变量来存在函数地址. static void* (*JSON_malloc)(size_t _Size);//申请空 ...
- 字符串解码(猿辅导笔试题数箱子)
可以申请两个栈,一个存放数字一个存放字符.本题我们直接申请一个栈,数据类型设定为pair<int,string>.遍历原字符串时,遇到数字则计算保存到num中,遇到左括号 [ 则入栈,入栈 ...
- 2021.06.03邮票面值设计
2021.06.03邮票面值设计 题目描述 给定一个信封,最多只允许粘贴 N 张邮票,计算在给定 K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值 MAX ...
- 【每日一题】字符串解码
文章目录 题目描述 题解 递归 利用栈 题目描述 394. 字符串解码 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 enc ...
- 2021.06.06家庭财经系统制作(2)
show tables; 查看数据库里有什么表命令. 碰到mysql软件问题.比想象的难缠. 用之前的方式打不开黑框(鼠标单击 mysql5.7 ccommand line Client),黑框一闪而 ...
最新文章
- 基于redis的分布式任务管理
- Javascript实现浏览器菜单命令
- asp.net menu Operation aborted
- 小米为其他手机适配rom_让小米引以为傲的MIUI,为什么不再给其它手机适配了?...
- Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙
- QThread多线程编程分析
- 用户界面样式-鼠标样式(HTML、CSS)
- 第 7 章 Neutron - 073 - Service Plugin / Agent
- 大数据前端个人提升与团队规划
- h5 api-获得地理经纬度和异常处理
- PyS60开发环境搭建
- 班主任直接把奖学金名额给了我?就因为我用Python给她写了一个自动阅卷脚本
- 巨蟒django之CRM1 需求分析表结构设计注册登录验证
- 草履虫纳米机器人_《Nature》:草履虫大小的微型机器人:由激光驱动,未来可用于显微外科手术!...
- WIA的使用及自定义可拖拽大小的picturebox
- 前端代码调试:Webstorm调试js
- React-Native全球化语言切换工具库react-native-i18n
- 【5G核心网】5G概念以及名词缩写解释
- 微信小程序之movable-view的direction用法
- 转专业计算机常见的名词解释,迎鲜肉第9弹|大学生活必知名词解释