关注
解决第一题的方法其实和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());
}
}
查看原帖
点赞 评论
相关推荐
10-30 14:15
东南大学 通信设备工程师
云雨b:没啥用,那个北方光电,10几分钟,还没说完就让下了,一周后就来offer,想要你的,没有时常限制,不想要你的,聊再久也没用 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我来点评面试官 #
6321次浏览 52人参与
# 实习教会我的事 #
37133次浏览 320人参与
# 京东开奖 #
442067次浏览 2489人参与
# 今年秋招是回暖还是遇冷 #
14409次浏览 88人参与
# 如果不考虑收入,你最想做什么工作? #
36494次浏览 225人参与
# 你实习是赚钱了还是亏钱了? #
15565次浏览 152人参与
# 商战,最累的是我们 #
24758次浏览 91人参与
# 京东工作体验 #
17303次浏览 104人参与
# 同bg的你秋招战况如何? #
163793次浏览 953人参与
# 教师节,你送祝福了吗 #
9628次浏览 71人参与
# 用一句话形容你的团队氛围 #
9420次浏览 115人参与
# 秋招开始捡漏了吗 #
52862次浏览 361人参与
# 三一重工求职进展汇总 #
21675次浏览 82人参与
# 找工作八股要背到什么程度? #
8658次浏览 143人参与
# 考研人,我有话说 #
150535次浏览 1199人参与
# 硬件人,你被哪些公司给挂了 #
69024次浏览 932人参与
# 58同城求职进展汇总 #
38949次浏览 260人参与
# 你找工作是从容有余 or 匆忙滚爬? #
5567次浏览 64人参与
# 华为存储OD事变 #
144197次浏览 724人参与
# 上班后,才发现大学__白学了 #
9000次浏览 57人参与
# 大学生该如何认清当下的就业环境? #
107919次浏览 637人参与
