代码:
两个栈 一个存数字 一个存字符串
class Solution {public String decodeString(String s) {Deque<String> stack2 = new LinkedList<>();Deque<Integer> stack1 = new LinkedList<>();int n = s.length();StringBuffer res = new StringBuffer("");int i=0;while(i<n){int cnt = 0;if(s.charAt(i)>='0'&&s.charAt(i)<='9'){while(s.charAt(i)>='0'&&s.charAt(i)<='9'){cnt*=10;cnt+=s.charAt(i)-'0';i++;}stack1.push(cnt);} if(s.charAt(i)!=']'){stack2.push(String.valueOf(s.charAt(i)));}else{StringBuffer sb = new StringBuffer();StringBuffer curRes = new StringBuffer("");while(!stack2.peek().equals("[")){sb.append(stack2.pop());}int num = stack1.pop();System.out.println(num);for(int j=0;j<num;j++){curRes.append(sb);}stack2.pop();stack2.push(curRes.toString());}i++; }while(!stack2.isEmpty()){res.append(stack2.pop());}return res.reverse().toString();}
}