问题链接:https://leetcode.com/problems/decode-string/
借助栈来实现,很平常的算法
class Solution {
public String decodeString(String s) {
int i=0;
Stack<Character> stack=new Stack<>();
while(i<s.length())
{
if(s.charAt(i)!=']')
{
stack.push(s.charAt(i));
}
else
{
StringBuilder tsb=new StringBuilder();
while(!stack.isEmpty() && stack.peek()!='[')
tsb.append(stack.pop());
stack.pop();
int frequency=0,pos=1;
while(!stack.isEmpty() && stack.peek()>='0' && stack.peek()<='9')
{
frequency=pos*(stack.pop()-'0')+frequency;
pos*=10;
}
for(int j=0;j<frequency;j++)
{
for(int k=tsb.length()-1;k>=0;k--)
stack.push(tsb.charAt(k));
}
}
i++;
}
char[] ret=new char[stack.size()];
for(int m=stack.size()-1;m>=0;m--)
ret[m]=stack.pop();
return new String(ret);
}
}