小蓝的括号串1(栈)

20.小蓝的括号串1 - 蓝桥云课

问题描述

小蓝有一个长度为 nn 的括号串,括号串仅由字符 ( 、 ) 构成,请你帮他判断一下该括号串是否合法,合法请输出 Yes ,反之输出 No 。

合法括号序列:

  1. 空串是合法括号序列。

  2. 若 ss 是合法括号序列,则 ( ss ) 也是合法括号序列。

  3. 若 s,ts,t 都是合法括号序列,则 stst 也是合法括号序列。

例如 ()() , (()) , (())() 均为合法括号序列。

输入格式

第一行包含一个正整数 nn ,表示括号串的长度。

第二行包含一个长度为 nn 的括号串。

输出格式

输出共 11 行,若括号串合法请输出 Yes ,反之输出 No 。

样例输入1

10
(()(()))()

样例输出1

Yes

样例输入2

5
()()(

样例输出2

No

 

#include<bits/stdc++.h>

using namespace std;

int n;
string s;
stack<char> st;

bool judge()
{
    for(int i=0;i<n;i++)
    {
        if(s[i]=='(')
          st.push(s[i]);
        if(s[i]==')')
        {
            if(st.empty())
              return false;
            st.pop();
        }
    }
    if(st.empty())
      return true;
    else
      return false;
}

int main()
{
    cin>>n;
    cin>>s;
    if(judge())
      cout<<"Yes"<<endl;
    else
      cout<<"No"<<endl;
      
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值