zoukankan      html  css  js  c++  java
  • Parentheses Balance (括号平衡)---栈

    题目链接:https://vjudge.net/contest/171027#problem/E

    Yes的输出条件:

    1. 空字符串

    2.形如()[];

    3.形如([])或者[()]

    分析:

    1.设置一个变量flag,初始值为1 (注意初始化的位置);

    2.括号的左半边入栈;

    3.若发现括号右半边的时候判断栈顶是否是对应的左半边(是:删除栈顶元素,否:flag=1,不是平衡的括号)!!!在进行这项判断之前一定要判断栈是不是空的,否则会出现错误,任何与栈有关的删除都是;

    4.最后还要判断栈是不是空的,不然向((())这样的字符串也会输出“Yes”;

    AC代码:

    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<stack>
    using namespace std;
    int main()
    {
        string a;
        int n,flag;
        cin>>n;
        getchar();
        while (n--)
        {
            flag=1;
            stack<char>s;
            getline(cin,a);
            for (int i=0;i<a.size();i++)
            {
                if (a[i]=='('||a[i]=='[')
                      s.push(a[i]);
                else if (a[i]==')')
                {
                    if (!s.empty())
                    {
                        if (s.top()=='(')
                                s.pop();
                        else
                            flag=0;
                    }
                    else
                        flag=0;
    
    
                }
                  else if (a[i]==']')
                {
                    if (!s.empty())
                    {
                        if (s.top()=='[')
                                s.pop();
                        else
                            flag=0;
                    }
                    else
                        flag=0;
    
    
                }
            }
            if (!s.empty())
                flag=0;
            if (flag==0)
                cout << "No" << endl;
            else
                cout << "Yes" << endl;
        }
        return 0;
    }
  • 相关阅读:
    hdu1089
    hdu1088
    驴妈妈
    途牛悄然上市 登陆SEC途牛前景如何
    途牛旅游网
    百度-----携程
    携程旅行网
    手机游戏
    web
    改造 改革
  • 原文地址:https://www.cnblogs.com/lisijie/p/7207819.html
Copyright © 2011-2022 走看看