关注
解决第一题的方法其实和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道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你想跟着什么样领导? #
5327次浏览 82人参与
# 什么样的背景能拿SSP? #
117211次浏览 410人参与
# 百度秋招 #
55879次浏览 394人参与
# 你的秋招白月光和意难平公司 #
6858次浏览 80人参与
# 分享一个让你热爱工作的瞬间 #
47362次浏览 412人参与
# 找实习是选平台还是选业务? #
10088次浏览 146人参与
# 从夯到拉,评价编程语言 #
4935次浏览 48人参与
# 秋招签约后的心态变化 #
105984次浏览 923人参与
# 职场吐槽大会 #
289637次浏览 2111人参与
# 每个月花钱最多的地方是? #
5171次浏览 76人参与
# xxx岗位的一天 #
9919次浏览 92人参与
# 作业帮求职进展汇总 #
77547次浏览 520人参与
# 十一月总结 #
13188次浏览 146人参与
# 你面试时吹过最大的牛 #
20053次浏览 116人参与
# 为什么国企只招应届生 #
218362次浏览 1262人参与
# 饿了么求职进展汇总 #
80209次浏览 684人参与
# 非技术求职现状 #
549388次浏览 3509人参与
# 实习学到最有价值的工作习惯 #
43525次浏览 378人参与
# 韶音科技求职进展汇总 #
64920次浏览 510人参与
# AI“智障”时刻 #
5972次浏览 54人参与
# 实习生如何通过转正 #
111671次浏览 1421人参与