力扣-394.字符串解码
题目链接
394.字符串解码
class Solution {public String decodeString(String s) {Stack<Integer> numStack = new Stack<>();Stack<StringBuilder> strStack = new Stack<>();StringBuilder curStr = new StringBuilder();int curNum = 0;for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (Character.isDigit(c)) {curNum = curNum * 10 + (c - '0');} else if (c == '[') {numStack.push(curNum);strStack.push(curStr);curNum = 0;curStr = new StringBuilder();} else if (c == ']') {int size = numStack.pop();StringBuilder temp = strStack.pop();for (int j = 0; j < size; j++) {temp.append(curStr);}curStr = temp;} else {curStr.append(c);}}return curStr.toString();}
}
小结:采用双栈法,一个栈存数字即重复次数,另一个栈存储的是需要与内层结果拼接的前缀字符串,而curStr
保存的是当前最内层正在处理的字符串。