自学内容网 自学内容网

蓝桥杯-Stack

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");
}
}






原文地址:https://blog.csdn.net/weixin_62944148/article/details/136542945

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!