关注
解决第一题的方法其实和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());
}
}
查看原帖
点赞 评论
相关推荐
查看16道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你感受到金三银四了嘛? #
22120次浏览 242人参与
# 25届网易互娱暑实进度 #
98870次浏览 768人参与
# 今天你投了哪些公司? #
39122次浏览 864人参与
# 27届求职交流 #
38491次浏览 791人参与
# 春招 / 实习投递,你最焦虑的一件事 #
23712次浏览 536人参与
# Tplink求职进展汇总 #
205977次浏览 946人参与
# 如果给AI员工评绩效,我的答案是…… #
3424次浏览 80人参与
# HR问:你期望的薪资是多少?如何回答 #
82363次浏览 707人参与
# 26届的你们有几段实习? #
169349次浏览 1087人参与
# 找工作,你都让AI帮你做什么? #
2258次浏览 91人参与
# 哪一刻你对工作祛魅了? #
8159次浏览 85人参与
# 26届求职交流 #
19712次浏览 484人参与
# AI时代下,你的岗位要求有什么变化? #
3954次浏览 89人参与
# 虽然0面试,但今天___,夸夸自己 #
1921次浏览 52人参与
# 求职低谷期你是怎么度过的 #
32664次浏览 341人参与
# AI项目实战 #
1881次浏览 79人参与
# 刚工作的你,踩过哪些坑? #
2188次浏览 45人参与
# 查收我的offer竞争力报告 #
282836次浏览 1714人参与
# 今年找实习到底有多难? #
7484次浏览 83人参与
# 一起聊美团 #
345877次浏览 1932人参与