2017文集C语言C++

STL——括号匹配

2017-04-22  本文已影响38人  停下浮躁的心

Problem D: STL——括号匹配

Time Limit: 1 Sec Memory Limit: 128 MB

Description

给出一堆括号,看其是否匹配,例如 ()、()()、(()) 这样的括号就匹配,)(、)()) 而这样的括号就不匹配

Input

每一行代表一组测试样例,每组测试样例只包含'('和')',样例长度不超过100个字符

Output

如果所有的括号都匹配,那么输出YES,否则输出NO

Sample Input

()

)(

Sample Output

YES

NO

HINT

使用STL的stack容易实现。

include<bits/stdc++.h>

using namespace std;
stack<char> bracket;
int main()
{

char s[101];
while(scanf("%s",s) == 1)
{
    int num;
    num = strlen(s);
    while( bracket.size() )
        bracket.pop();
    int jump = 0;
    for(int i = 0; i < num; i++)
    {
        if(s[i] == '(')
        {
            bracket.push(s[i]);
        }
        else if(s[i] == ')')
        {
            if(bracket.empty())
            {
                cout<<"NO"<<endl;
                jump++;
                break;
                //return 0;
            }
            else
            {
                bracket.top();
                bracket.pop();
            }
        }
    }
    if(!bracket.empty())
    {
        cout<<"NO"<<endl;
    }
    else
    {
        if(jump == 0)
        {
            cout<<"YES"<<endl;
        }

    }

}

}
/*
())
)()()
()
((())
*/

上一篇 下一篇

猜你喜欢

热点阅读