zoukankan      html  css  js  c++  java
  • 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] != '';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;
    }
  • 相关阅读:
    Eclipse设置打开的默认浏览器
    Java | 源文件
    博客园--个人博客背景设置
    MYSQL | 修改密码
    博客园首秀----Markdown
    Redis@Redis
    网络编程@Socket网络编程
    JVM@JVM基础
    并发编程@Disruptor并发框架
    并发编程@并发编程高级
  • 原文地址:https://www.cnblogs.com/zqxLonely/p/4913359.html
Copyright © 2011-2022 走看看