394--字符串编码(技巧)
题目
给定一个经过编码的字符串,返回它解码后的字符串。
编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。
你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。
此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。
示例 1:
输入:s = "3[a]2[bc]"
输出:"aaabcbc"
题解
点击查看代码
class Solution {
public String decodeString(String s) {
StringBuilder builder=new StringBuilder();
Stack<StringBuilder> cstack=new Stack<>();
Stack<Integer> nstack=new Stack<>();
int num=0;
char[] chars = s.toCharArray();
for (char aChar : chars) {
if(Character.isDigit(aChar)){
num=num*10+aChar-'0';
}
else if(aChar=='['){
cstack.push(builder);
nstack.push(num);
builder=new StringBuilder();
num=0;
}
else if(Character.isAlphabetic(aChar)){
builder.append(aChar);
}
else {
Integer l = nstack.pop();
StringBuilder pop = cstack.pop();
for(int i=0;i<l;i++){
pop.append(builder);
}
builder=pop;
}
}
return builder.toString();
}
}
技巧
- 计数的时候用了 num=num*10+aChar
- 用了两个栈,一个栈是数字栈,还有一个栈是字符串栈。所以两个交替使用。并且用了StringBUffer用来存储每次产生的String
分类:
Leetcode刷题记录--栈
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理