class Solution {
public String decodeString(String s) {
StringBuilder sb = new StringBuilder();
int i = s.length()-1;
StringBuilder n= new StringBuilder();
Stack<Character> stack = new Stack<>();
while(i>=0){
while(i>=0 && Character.isDigit(s.charAt(i))){
n.insert(0,s.charAt(i));
i--;
}
if(n.length()!=0){
doOp(Integer.parseInt(n.toString()), stack);
n.setLength(0);
}
if(i>=0 && !Character.isDigit(s.charAt(i))){
stack.push(s.charAt(i));
}
i--;
}
while(!stack.isEmpty()){
sb.append(stack.pop());
}
return sb.toString();
}
public static void doOp(int c, Stack<Character> stack){
stack.pop(); //pop the [
StringBuilder sb = new StringBuilder();
while(stack.peek()!=']'){
sb.append(stack.pop());
}
if(!stack.isEmpty()){
stack.pop();//pop the ]
}
char ch[] = sb.toString().repeat(c).toCharArray();
for(int i =ch.length-1;i>=0;i--){
stack.push(ch[i]);
}
}
}
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)