13届蓝桥杯夺奖冲刺营|蓝桥杯省赛夺奖冲刺营栈篇

蓝桥杯省赛夺奖冲刺营栈篇 「小邋遢的衣橱」
题目描述
小邋遢 MS.JinlinMS.Jinlin 是个爱打扮的公主,他有很多晚礼服如 “LALA” “NIHAOMA” “WOBUHAO” “NIHAOBUHAO” 等众多衣服,可是由于衣服太多他要把它们装进箱子,但是作为公主,肯定是会突发奇想觉得哪件衣服好看,就把他拿了出来,当然那件衣服上面的衣服也被拿出来了,而且会弄乱了,小邋遢在经过几次的叠衣服和取衣服后,他想知道箱子里最上面的衣服是哪一件,如果箱子为空的话,就告诉她 Empty ,如果有多件一样的衣服,肯定是取走最上面的哪一件啦。
输入描述
第 1行,输入N,代表共计进行了几次操作。
第 2 行至第 N+1行,进行 in out 操作(in 为 放入衣服,out 为 取出衣服)
格式如下:
in name1
out name2
输出描述
输出 N 次操作结束后箱子最上面的衣服名字,若箱子为空,输出 Empty。
输入输出样例
示例 1
输入

6 in AMDYES in INTELNO in USBAD in CNYES out INTELNO in MDICN

输出
MDICN

示例 2
输入
5 in AMDYES in INTELNO in USBAD in CNYES out AMDYES

输出
Empty

运行限制
最大运行时间:1s
最大运行内存: 128M
代码
import java.util.Scanner; public class Main { static int sSize=1000; static String[] box=new String[sSize]; static int top=-1; //栈顶指针 public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n=sc.nextInt(); while(n-->0) { String op=sc.next(); String brand=sc.next(); oper(op,brand); } if(top==0) { System.out.println("Empty"); }else { System.out.println(box[top]); } } private static boolean oper(String op, String brand) { if(op.equals("in")) {//入栈 top++; box[top]=brand; return true; }else {//出栈 while(top!=0) { if(!(box[top].equals(brand))) { top--; }else {//找到 top--; return true; } } return false; } } }

「小邋遢的衣橱工具简化版」
【13届蓝桥杯夺奖冲刺营|蓝桥杯省赛夺奖冲刺营栈篇】代码
import java.util.Scanner; import java.util.Stack; public class Main { static Stack> stack = new Stack<>(); public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n=sc.nextInt(); while(n-->0) { String op=sc.next(); String brand=sc.next(); if(op.equals("in")) { stack.push(brand); }else { while(stack.size()>0) {//不空 if(stack.peek().equals(brand)) { stack.pop(); break; }else { stack.pop(); } } } } if(stack.size()==0) { System.out.println("Empty"); }else { System.out.println(stack.peek()); } } }

    推荐阅读