关注
解决第一题的方法其实和leetcode上394. Decode String很像,如果用迭代思想的话需要两个 stack 来辅助运算,一个用来保存个数,一个用来保存字符串。 我们遍历输入字符串,如果遇到数字,更新计数变量num。如果遇到'[',把当前字符串t压入字符串栈中,并将t清零。如果遇到'|',我们把当前num压入数字栈中,并把num清零。如果遇到']',我们取出数字栈中顶元素,存入变量n,然后给字符串栈的顶元素循环加上n个当前t字符串,然后更新t的值。如果遇到字母,我们直接加入当前字符串t中即可。一定要注意是把当前的字符串t重复数字栈顶的次数后加到字符串栈顶的字符后面(有点儿绕🤣)代码如下: import java.util.Scanner;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
StringBuilder t = new StringBuilder("");
int num = 0;
Deque<Integer> stackNum = new ArrayDeque<>();
Deque<StringBuilder> stackStr = new ArrayDeque<>();
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(c >= '0' && c <= '9'){
num = 10 * num + c - '0';
}else if(c == '['){
stackStr.push(t);
t = new StringBuilder("");
}else if(c == '|'){
stackNum.push(num);
num = 0;
}else if(c == ']'){
int n = stackNum.pop();
StringBuilder sb = stackStr.pop();
for(int j = 0; j < n; j++){
sb.append(t);
}
t = sb;
}else{
t.append(c);
}
}
System.out.println( t.toString());
}
}
查看原帖
点赞 评论
相关推荐

点赞 评论 收藏
分享
06-18 20:47
广西大学 单片机 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 第一份工作应该选高薪还是热爱? #
66303次浏览 591人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
91815次浏览 677人参与
# 秋招签约后的心态变化 #
82352次浏览 812人参与
# 听劝,这个公司值得去吗 #
485851次浏览 1700人参与
# 你觉得早上几点上班合适? #
72148次浏览 303人参与
# 学历贬值真的很严重吗? #
24311次浏览 172人参与
# 机械人与华为的爱恨情仇 #
120088次浏览 957人参与
# 一人推荐一个值得去的通信/硬件公司 #
186394次浏览 1859人参与
# 打工人的工作餐日常 #
52962次浏览 415人参与
# 哪些公司真双非友好? #
15720次浏览 82人参与
# 26届的你们有几段实习? #
43265次浏览 484人参与
# 月薪多少能在一线城市生存 #
26918次浏览 300人参与
# 双非能在秋招上岸吗? #
221556次浏览 1172人参与
# 你以为的实习VS真实的实习 #
28884次浏览 263人参与
# 你后悔自己读研吗? #
20110次浏览 239人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
117795次浏览 812人参与
# 追觅科技求职进展汇总 #
18184次浏览 120人参与
# 今年秋招哪家公司给的薪资最良心? #
252642次浏览 1416人参与
# 实习想申请秋招offer,能不能argue薪资 #
149753次浏览 931人参与
# 如何KTV领导 #
62727次浏览 472人参与