https://leetcode-cn.com/problems/decode-string/
思路:利用两个栈,一个字符栈,一个数字栈
遇到’[‘:数字进栈,字符进栈(实现细节利用StringBuilder拼接)
遇到’]':数字出栈,字符出栈
class Solution {
public String decodeString(String s) {
StringBuilder sb = new StringBuilder();
Stack<Integer> numstack = new Stack<>();
Stack<StringBuilder> alphastack = new Stack<>();
int number = 0;
for(char c:s.toCharArray()){
if(Character.isDigit(c)){
number = number*10+c-'0';
}else if(c=='['){
numstack.push(number);
alphastack.push(sb);
number = 0;
sb = new StringBuilder();
}else if(c==']'){
int multi = numstack.pop();
StringBuilder tmp = alphastack.pop();
for(int i=0;i<multi;i++){
tmp.append(sb.toString());
}
sb = tmp;
}else{
//用来指示[]中的字符
sb.append(c);
}
}
return sb.toString();
}
}