package stack; import java.util.Stack; /** * Created by gouthamvidyapradhan on 12/04/2018. * Given an encoded string, return it's decoded string. *

* The encoding rule is: k[encoded_string], where the encoded_string inside the square brackets is being repeated * exactly k times. Note that k is guaranteed to be a positive integer. *

* You may assume that the input string is always valid; No extra white spaces, square brackets are well-formed, etc. *

* Furthermore, you may assume that the original data does not contain any digits and that digits are only for those * repeat numbers, k. For example, there won't be input like 3a or 2[4]. *

* Examples: *

* s = "3[a]2[bc]", return "aaabcbc". * s = "3[a2[c]]", return "accaccacc". * s = "2[abc]3[cd]ef", return "abcabccdcdcdef". * * Solution: Maintain a stack and push items when a character other than ] is encountered. When a character ] is * encountered pop elements, build string and duplicate it. */ public class DecodeString { /** * Main method * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { System.out.println(new DecodeString().decodeString("100[leetcode]")); } public String decodeString(String s) { Stack stack = new Stack(); for (int i = 0; i 0) { stringMultiple.append(str); } for (int j = 0; j