DEV Community

Prashant Mishra
Prashant Mishra

Posted on

Decode String

Problem

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]); } } } 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)