关注
解决第一题的方法其实和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());
}
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 26届秋招公司红黑榜 #
8151次浏览 24人参与
# 实习必须要去大厂吗? #
145567次浏览 1532人参与
# 未岚大陆求职进展汇总 #
23406次浏览 108人参与
# 校招泡的最久的公司是哪家? #
3162次浏览 16人参与
# 度小满求职进展汇总 #
9332次浏览 49人参与
# 你的mentor是什么样的人? #
2294次浏览 13人参与
# 智慧芽求职进展汇总 #
14730次浏览 97人参与
# 职场新人体验 #
94061次浏览 639人参与
# 你觉得mentor喜欢什么样的实习生 #
8146次浏览 246人参与
# 没有家庭托举的我是怎么找工作的 #
10226次浏览 150人参与
# 入职第一天,你准备什么时候下班 #
85052次浏览 467人参与
# 从哪些方向判断这个offer值不值得去? #
5164次浏览 83人参与
# 技术岗笔试题求解 #
95092次浏览 1101人参与
# 求职低谷期你是怎么度过的 #
4185次浏览 78人参与
# 最难的技术面是哪家公司? #
54508次浏览 893人参与
# 面试紧张时你会有什么表现? #
1121次浏览 19人参与
# 秋招想进国企该如何准备 #
97358次浏览 487人参与
# 独居后,你的生活是更好了还是更差了? #
27808次浏览 263人参与
# 机械人的工作环境真的很差吗 #
24581次浏览 119人参与
# 你有哪些缓解焦虑的方法? #
36882次浏览 835人参与
# 跳槽时有那些注意事项 #
105800次浏览 567人参与
# 工作压力大怎么缓解 #
117409次浏览 1108人参与