394. Decode String 发表于 2022-01-26 123456789101112131415161718192021222324252627282930class Solution { public String decodeString(String s) { Stack<StringBuilder> cacheStack = new Stack<>(); cacheStack.push(new StringBuilder()); Stack<Integer> numStack = new Stack<>(); int num = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c >= '0' && c <= '9') { num = num * 10 + (c - '0'); } else if (c == '[') { numStack.push(num); num = 0; cacheStack.push(new StringBuilder()); } else if (c == ']') { StringBuilder part = cacheStack.pop(); int count = numStack.pop(); for (int j = 0; j < count; j++) { cacheStack.peek().append(part); } } else { // c is alpha cacheStack.peek().append(c); } } return cacheStack.pop().toString(); }} Reference394. Decode String