对于每组测试数据,第一行是一个正整数 n(0 < n <= 10000)。而后的 n 行,每行的第一个字符可能是'P'或者'O'或者'A';如果是'P',后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O',表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是'A',表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈开始为空。
对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A'操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出'E'。
3 A P 5 A 4 P 3 P 6 O A
E 5 3
import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()){ int n = scanner.nextInt(); Stack<Integer> stack = new Stack<>(); for (int i = 0; i < n; i++) { String s = scanner.next(); //push if (s.contains("P")) stack.push(scanner.nextInt()); //peek else if (s.equals("A")){ if (!stack.isEmpty()) System.out.println(stack.peek()); else System.out.println("E"); // pop 不需输出 }else if (s.equals("O")&&!stack.isEmpty()) stack.pop(); } // 题目要求的格式 System.out.println(); } } }