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)