1、Stack实例化
步骤:
- 导包,java.util.*;
- 实例化对象,语法格式:
Stack <应用数据类型> stack = new Stack<>();
特点:先进先出。
2、常用方法
- Object push(Object element)把对象压入堆栈顶部。
- Object pop()移除堆栈顶部的对象,并作为此函数的值返回该对象
- Object peek()查看堆栈顶部的对象,但不从堆栈中移除它
- boolean isEmpty()测试堆栈是否为空
例题
https://www.lanqiao.cn/problems/2490/learning/
小蓝有一个长度为n的括号串,括号串仅有字符(、)构成,请你帮他判断一下该括号串是否合法,请输出Yes,反之输出No。
合法括号序列:
- 空串是合法括号序列
- 若s是合法括号序列,则(s)也是合法括号序列
- 若s,t都是合法括号序列,则st也是合法括号序列。
例如()(),(()),(())()均为合法括号序列
输入格式:
第一行包含一个正整数n,表示括号串的长度
第二行包含一个长度为n的括号串
输出格式:
输出共1行,若括号串合法请输出yes,繁殖输出no
样例 10 5
(()(()))() ()()(
Yes No
public static void main(String[] args) {
Stack <Character> stack = new Stack<>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
// 转换数组
char []c = sc.next().toCharArray();
boolean fa = true;
for (char x:c){
if (x == '('){
//入栈
stack.push(x);
}else{
//判断当前是否还有左括号
if (!stack.isEmpty()){
//出栈
stack.pop();
}else{
fa = false;
break;
}
}
}
if (!stack.isEmpty()){
fa = false;
}
if (fa){
System.out.println("Yes");
}else{
System.out.println("No");
}
}