class Solution {
public String decodeString(String s) {
StringBuilder res = new StringBuilder();
int multi = 0;
Stack<Integer> stack_multi = new Stack<>();
Stack<String> stack_res = new Stack<>();
for(Character c : s.toCharArray()) {
if(c == '[') {
stack_multi.push(multi);
stack_res.push(res.toString());
multi = 0;
res = new StringBuilder();
}
else if(c == ']') {
StringBuilder tmp = new StringBuilder();
int cur_multi = stack_multi.pop();
for(int i = 0; i < cur_multi; i++) tmp.append(res);
res = new StringBuilder(stack_res.pop() + tmp);
}
else if(c >= '0' && c <= '9') multi = multi * 10 + Integer.parseInt(c + "");
else res.append(c);
}
return res.toString();
}
}
2022-02-14(394. 字符串解码)
最新推荐文章于 2024-11-13 15:00:00 发布
该博客介绍了如何使用Java实现一个字符串解码算法。通过遍历输入字符串,利用栈来处理数字和字符,当遇到'['时存储当前乘数和结果字符串,遇到']'时将栈中乘数与当前结果拼接,形成新的结果。此算法适用于含有数字和字符的编码字符串解码问题。
891

被折叠的 条评论
为什么被折叠?



