394. Decode String
394. Decode String Two solutions: solution 1 : Recursion , solution 2 : Iterative with stack to imitate the call stack used in recursion http://www.cnblogs.com/grandyang/p/5849037.html public class Solution { public String decodeString(String s) { String res = ""; Stack<Integer> countStack = new Stack<>(); Stack<String> resStack = new Stack<>(); int idx = 0; while (idx < s.length()) { if (Character.isDigit(s.charAt(idx))) { int count = 0; while (Character.isDigit(s.charAt(idx))) { count = 10 * count + (s.charAt(idx) - '0'); idx++; } countStack.push(count); } else if (s.charAt(idx) == '[') { resStack.push(res); res = ""; idx++; } else if (s.charAt(idx) == ']') { StringBuilder temp = new StringBuilder (resStack.pop()); int repeatTimes = countStack.pop(); for (int i = 0; i < repeatTimes; i++) { temp.append(res); } res = temp.toString(); idx++; } else { res += s.charAt(idx++); } } return res; } }
posted on 2018-09-20 18:14 猪猪🐷 阅读(88) 评论(0) 收藏 举报
浙公网安备 33010602011771号