NYOJ2 括号配对问题

括号配对问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
 
描述
现在,有一行括号序列,请你检查这行括号是否配对。
 
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
#include <iostream>
using namespace std;

class Stack
{
private:
    int top;
    char s[10001];

public:
    Stack()
    {
        top = -1;
    }

    bool empty()
    {
        if (top == -1)
            return true;

        else
            return false;
    }

    void push(char c)
    {
        s[++top] = c;
    }

    void pop()
    {
        top--;
    }

    char get_top()
    {
        return s[top];
    }

    int length()
    {
        return top;
    }
};

int main()
{
    int T;
    char s[10001];
    cin >> T;
    int i;
    char c;

    while (T--)
    {
        cin >> s;

        Stack stack;
        for (i = 0;s[i] != '\0';i++)
        {
            if (stack.empty() == true)
            {
                stack.push(s[i]);
            }

            else
            {
                c = stack.get_top();

                if (c == '[')
                {
                    if (s[i] == ']')
                    {
                        stack.pop();
                    }

                    else
                    {
                        stack.push(s[i]);
                    }
                }

                else if (c == '(')
                {
                    if (s[i] == ')')
                    {
                        stack.pop();
                    }

                    else
                    {
                        stack.push(s[i]);
                    }
                }

                else
                {
                    stack.push(s[i]);
                }
            }
        }

        if (stack.length() == -1)
        {
            cout << "Yes" << endl;
        }

        else
        {
            cout << "No" << endl;
        }
    }
    return 0;
}

 

posted @ 2015-10-27 10:09  zqxLonely  阅读(142)  评论(0编辑  收藏  举报