括号匹配问题SWUSTOJ962

时光总嘲笑我的痴心妄想 提交于 2020-02-16 17:35:26

题目链接:括号匹配问题

在这里插入图片描述
思路: 栈的应用:
遇到左括号入栈
遇到右括号,栈空则跳出循环,反之比较栈顶元素是否匹配,不匹配跳出循环
代码:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    char s[500];
    cin>>s;
    stack <char> p;
    int ls=strlen(s),i;
    bool flag=true;
    for(i=0;i<ls;i++)
    {
        if(s[i]=='['||s[i]=='(')
            p.push(s[i]);
        else
        {
            if(p.empty())
            {
                cout<<"NO";
                flag=false;
                break;
            }
            else
            {
                if((s[i]==']'&&p.top()=='[')||(s[i]==')'&&p.top()=='('))
                    p.pop();
            }
        }
    }
    if(flag)
    {
        if(p.empty())
            cout<<"YES";
        else
            cout<<"NO";
    }
    return 0;
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!