LeetCode75-394-Decode-String

🧠 思路总结

这道题目为什么要用Stack:题目里有嵌套结构(必须先算里面,再算外面),这是LIFO = Stack。

扫描字符串:

  1. [:把当前状态压栈
  2. ]:弹栈并结算当前层
  3. 字母直接拼
  4. 数字记录次数

✅ 代码(Java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution {
public String decodeString(String s) {
Stack<Integer> numStack = new Stack<>();
Stack<String> strStack = new Stack<>();

String curStr = "";
int num = 0;

for (char c : s.toCharArray()) {
if (Character.isDigit(c)) {
num = num * 10 + (c - '0');
} else if (c == '[') {
numStack.push(num);
strStack.push(curStr);
num = 0;
curStr = "";
} else if (c == ']') {
int k = numStack.pop();
String prev = strStack.pop();
StringBuilder sb = new StringBuilder(prev);
for (int i = 0; i < k; i++) {
sb.append(curStr);
}
curStr = sb.toString();
} else {
curStr += c;
}
}
return curStr;
}
}

LeetCode75-394-Decode-String
https://powersixxx.github.io/leetcode-blog/2026/02/09/LeetCode75-394-Decode-String/
作者
Baowen Liu
发布于
2026年2月9日
许可协议