代码:
两个栈 一个存数字 一个存字符串
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();
}
}