[LeetCode Hot 100] LeetCode394. 字符串解码
题目描述
思路
思路:
- 碰到数字:压入数字栈,注意多位数的情况
- 碰到字母:直接拼接到res
- 遇到[:将num和res分别压入栈
- 遇到]:开始处理栈顶元素
方法一:
class Solution {
public String decodeString(String s) {
int num = 0;
StringBuilder res = new StringBuilder();
Deque<String> DigStack = new ArrayDeque<>();
Deque<Integer> NumStack = new ArrayDeque<>();
for (char c : s.toCharArray()) {
if (c >= '0' && c <= '9') {
num = num * 10 + (c - '0');
} else if (c == '[') {
NumStack.push(num);
DigStack.push(res.toString());
res.delete(0, res.length());
num = 0;
} else if (c == ']') {
String item = res.toString();
int times = NumStack.pop();
for (int i = 0; i < times - 1; i ++) {
res.append(item);
}
res.insert(0, DigStack.pop());
} else{
res.append(c);
}
}
return res.toString();
}
}
本文作者:Ac_c0mpany丶
本文链接:https://www.cnblogs.com/keyongkang/p/17924616.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步