Stack栈

本文介绍了如何在Java中使用Stack类进行实例化,并通过遍历字符数组判断括号序列的合法性,最后输出Yes或No。
摘要由CSDN通过智能技术生成

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");
        }
    }
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂小羊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值