赞
踩
本题主要思路是使用两个栈:一个用于存储倍数(数字),另一个用于存储解码结果(字符串)。在遍历输入字符串时,根据不同的字符执行相应的操作,最终得到解码后的字符串。
具体来说,字符有四种不同的情况:
Java代码如下:
- class Solution {
- public String decodeString(String s) {
- StringBuilder ans = new StringBuilder();
- int mutil = 0;
- LinkedList<Integer> stack_multi = new LinkedList<>();
- LinkedList<String> stack_ans = new LinkedList<>();
- for(Character c : s.toCharArray()){
- if(c >= '0' && c <= '9'){
- mutil = mutil * 10 + (c - '0');
- }
- else if(c == '['){
- stack_multi.addLast(mutil);
- stack_ans.addLast(ans.toString());
- mutil = 0;
- ans = new StringBuilder();
- }
- else if(c == ']'){
- int cur_mutil = stack_multi.removeLast();
- StringBuilder temp = new StringBuilder();
- for(int i=0; i<cur_mutil; i++) temp = temp.append(ans);
- ans = new StringBuilder(stack_ans.removeLast() + temp);
- }
- else{
- ans.append(c);
- }
- }
- return ans.toString();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。