题目如下:
这个题思路不难,一般遇到这种括号问题,大多用栈来解决,遇到左括号进栈,遇到右括号出栈,但是写起来还是不容易哇,力扣中等难度还是中等难度,比简单题还是难不少。
下面是实现代码:
class Solution {
public String decodeString(String s) {
StringBuffer ans=new StringBuffer();
Stack<Integer> multiStack=new Stack<>();
Stack<StringBuffer> ansStack=new Stack<>();
int multi=0;
for(char c:s.toCharArray()){
if(Character.isDigit(c))multi=multi*10+c-'0';
else if(c=='['){
ansStack.add(ans);
multiStack.add(multi);
ans=new StringBuffer();
multi=0;
}else if(Character.isAlphabetic(c)){
ans.append(c);
}else{
StringBuffer ansTmp=ansStack.pop();
int tmp=multiStack.pop();
for(int i=0;i<tmp;i++)ansTmp.append(ans);
ans=ansTmp;
}
}
return ans.toString();
}
}