字符串匹配问题

题目描述

字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式,从内到外必须是<>,(),[],{},例如。输入: [()] 输出:YES,而输入([]), ([])都应该输出NO。

输入

       第一行为一个整数n,表示以下有多少个由括好组成的字符串。接下来的n行,每行都是一个由括号组成的长度不超过255的字符串

输出

 在输出中有N行,每行都是YES或NO。

样例输入

5
{}{}<><>()()[][]
{{}}{{}}<<>><<>>(())(())[[]][[]]
{{}}{{}}<<>><<>>(())(())[[]][[]]
{<>}{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]
><}{{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]

样例输出

YES
YES
YES
YES
NO
#include 
#include 
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        stack zu;
        string a;
        cin>>a;
        int flag=0;
        for(int i=0;i')
                {
                    if(zu.empty()==1)
                    {flag=1;break;}
                    if(zu.top()!='<')
                    {flag=1;break;}
                    else
                    zu.pop();
                }
                if(c=='}')
                {
                    if(zu.empty()==1)
                    {flag=1;break;}
                    if(zu.top()!='{')
                    {flag=1;break;}
                    else
                    zu.pop();
                }
            }
        }
        if(flag==1)
        {cout<<"NO\n";continue;}
        if(zu.empty()==0)
        {cout<<"NO\n";continue;}
        printf("YES\n");
    }
    return 0;
}

 

你可能感兴趣的:(字符串匹配问题)