Leetcode算法学习日志-394 Decode String
来源:互联网 发布:mysql简版 编辑:程序博客网 时间:2024/05/17 03:00
Leetcode 394 Decode String
题目原文
Given an encoded string, return it's decoded string.
The encoding rule is: k[encoded_string]
, where theencoded_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".
题意分析
方括号前的数字代表方括号中string需要重复的次数,解码就是将所有string按照数字表示的次数展开。
解法分析
本题方括号中又嵌套有方括号,就想到从内到外展开,运用递归的思想,本题的关键在于定义一个全局变量i,用来记录已经遍历到的s的位置。本题另一个关键是数字可能是多位的。C++代码如下:
class Solution {private: int i;//globle variable string S;public: string recursion(){ string cur,count; for(;i<S.size();i++){ if(S[i]==']') break; if(isdigit(S[i])) count.push_back(S[i]); else if(S[i]=='['){ i++; string temp=recursion(); for(int j=0;j<stoi(count);j++) cur+=temp; count=""; } else cur.push_back(S[i]); } return cur; } string decodeString(string s) { S=s; i=0; return recursion(); } };
对于字符,可以用isdigit()来判断是否是数字字符。上述代码中,如果遇到【便进入递归调用,i同时加一,如果遇到】就返回,因此递归的返回条件是多样的,要根据问题来定。阅读全文
0 0
- Leetcode算法学习日志-394 Decode String
- LeetCode[394] Decode String
- leetcode-394-Decode String
- leetcode(394). Decode String
- leetcode.394 Decode String
- LeetCode.394 Decode String
- Leetcode算法学习日志-443 String Compression
- LeetCode #394 - Decode String -Medium
- LeetCode 394 Decode String 题解
- [Leetcode-394]【Stack】Decode String
- [C语言][LeetCode][394]Decode String
- 【Leetcode】394. Decode String
- [Leetcode] Decode String
- 【leetcode】394. Decode String
- LeetCode: Decode String
- leetcode ----394. Decode String
- [leetcode] 394. Decode String
- [Leetcode]394. Decode String
- Bailian2750 鸡兔同笼【入门】
- 机器学习实战笔记-利用AdaBoost元算法提高分类性能
- OPENGL学习笔记之八
- IntelliJ idea2017 安装
- 【干货#009】小程序如何格式化显示对象数组属性
- Leetcode算法学习日志-394 Decode String
- c#异步请求用await和.Result用哪个好
- 静态变量、自动变量与寄存器变量的存储
- 最长回文子串
- 【程序员代码面试指南】-栈和队列-最小栈/ 双栈队列/ 栈排序
- 字符串 转变成数字
- 导入orcale数据库
- Mysql启动报错:Unit mysql.service failed to load: No such file or directory的解决办法
- PullToRefresh下拉和上拉简单实现