【Leetcode】394. Decode String
来源:互联网 发布:php电影网站源码 编辑:程序博客网 时间:2024/04/28 00:45
题目链接:https://leetcode.com/contest/3/problems/decode-string/
题目:
Given an encoded string, return it's decoded string.
The encoding rule is: k[encoded_string]
, where the encoded_string inside the square brackets is being repeated exactly k times. Note thatk 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".
思路:
跟mini parser题目几乎一样
算法:
if (s.length() == 0) {return s;}Stack<String> sstack = new Stack<String>();Stack<Integer> istack = new Stack<Integer>();s += ']';s = "1[" + s;boolean isNum = false;char c[] = s.toCharArray();int l = 0;int nl = 0;for (int i = 0; i < c.length; i++) {if (c[i] > '0' && c[i] <= '9') {if (isNum == false && l < i) {sstack.push(s.substring(l, i));}if (isNum == false) {nl = i;}isNum = true;} else if (c[i] == '[') {l = i + 1;if (l < i) {sstack.push(s.substring(l, i));}istack.push(Integer.parseInt(s.substring(nl, i)));nl = i + 1;isNum = false;} else if (c[i] == ']') {if (l < i) {sstack.push(s.substring(l, i));}int times = istack.pop();String token = sstack.pop(), tmp = "";for (int k = 0; k < times; k++) {tmp += token;}String lastToken = "";if (!sstack.isEmpty()) {lastToken = sstack.pop();}lastToken += tmp;sstack.push(lastToken);l = i + 1;nl = i + 1;isNum = false;} else {isNum = false;}}return sstack.pop();
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 394. Decode String
- 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] 394. Decode String
- leetcode 394. Decode String
- LeetCode 394. Decode String
- LeetCode 394. Decode String
- leetcode-394. Decode String
- uva 10200 Prime Time 精度控制
- 八大排序算法
- sqlserver怎么给已有表的已有字段添加自动编号
- 13 找对象
- Matlab JPEG详细介绍
- 【Leetcode】394. Decode String
- c++string 字符串类型用法
- RocketMQ 入门部署
- GridView
- Awesome IoT
- cocos2dx学习之路----第十三篇(动作类初探)
- spring(1)_控制反转_helloWorld_ioc
- 选择恐惧症的福音!教你认清MVC,MVP和MVVM
- Hust oj 1720 Fibonacci Numbers(水题)