关注
解决第一题的方法其实和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());
}
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
xiaowl:你这个简历的问题是对于技术点、项目的描述,都是描述action的,对于面试官而言,仅能知道你干了什么,无法判断你为什么这么干,干的好不好。 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# Agent面试会问什么? #
18629次浏览 638人参与
# 哪些公司一直卡在简历筛选 #
98523次浏览 295人参与
# 厦门银行科技岗值不值得投 #
18102次浏览 419人参与
# 给工作过的公司写一条大众点评,你会怎么写? #
6193次浏览 99人参与
# 一人分享一个skill #
4688次浏览 134人参与
# 烂工作和没工作哪个更痛苦? #
14673次浏览 233人参与
# 拼多多工作体验 #
54691次浏览 366人参与
# 春招至今,你收到几个面试了? #
53840次浏览 760人参与
# 我们是不是被“优绩主义”绑架了? #
43611次浏览 536人参与
# 运营每日一题 #
134078次浏览 925人参与
# 面试体验最好和最差的公司 #
17220次浏览 100人参与
# 央国企投递记录 #
186824次浏览 1709人参与
# 你觉得专业和学校哪个对薪资影响最大 #
103774次浏览 613人参与
# AI替代不了什么? #
9726次浏览 137人参与
# 我是XXX,请攻击我最薄弱的地方 #
71539次浏览 469人参与
# 你收到了团子的OC了吗 #
1582561次浏览 11849人参与
# 现在入门AI首先要做什么? #
3222次浏览 80人参与
# 面试尴尬现场 #
223909次浏览 868人参与
# 机械人面试中的常问题 #
266571次浏览 3686人参与
# 学历VS实习,哪个更重要? #
24969次浏览 322人参与
# 实习心态崩了 #
113263次浏览 615人参与
查看18道真题和解析