Stack实例化步骤
1导包,导入java.util.*
2实例化对象,格式如下
Stack<引用数据类型> stack=new Stack<>();
Stack特点:先进后出。比如1,2,3依次入栈,出栈顺序就是3,2,1
常用方法
1 Object push(Object element)
把对象压入堆栈顶部。
2 Object pop()
移除堆栈顶部的对象,并作为此函数的值返回该对象。
3 Object peek()
查看堆栈顶部的对象,但不把它从堆栈中移除它
4 boolean isEmpty()
测试堆栈是否为空
package AAA;import java.util.Stack;public class Main4 {public static void main(String args[]) {Stack<Integer> stack=new Stack<>();stack.push(2);stack.push(3);stack.push(1);stack.peek();System.out.println(stack.peek());stack.pop();//删除顶部对象,并将该对象的值返回System.out.println(stack.pop());stack.peek();//仅查看顶部对象,不删除System.out.println(stack.peek());}}
例题实战
题目 小蓝有一个长度为n的括号串,括号串仅由字符(、)构成,请你帮它判断以下该括号是否合法,合法请输出Yes,反之输出No
合法括号序列:
若s是合法括号序列,则(s)也是合法括号序列。
若s,t都是合法括号序列,则st也是合法括号序列
例如()(),(()),(())()军事合法括号序列。
示例
输入10 (()(()))()
输出Yes
package AAA;import java.util.*;public class Main3 {public static void main(String args[]) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();char []a=scanner.next().toCharArray();//转成数组Stack<Character> stack=new Stack<>();boolean c=true;for(char x:a) {if(x=='(') {//如果是做左括号的情况stack.push(x);//入栈}else {//如果是右括号的情况if(!stack.isEmpty()){//栈内存在左括号与它对应stack.pop();//出栈}else {//栈内没有左括号与之对应c=false;break;}}}//if(stack.isEmpty()==0) c;else c=false;if(!stack.isEmpty()) c=false;if(c) System.out.println("Yes");else System.out.println("No");} }