• 基础数据结构-堆栈-拓展:括号匹配


    这是一个考察对堆栈概念理解的应用,输入一串带括号的式子,检查其中的括号是否前后对应。思路是当遇到括号是入栈,并在下次遇到括号时检测是否与上一个入栈的括号匹配为一对,不是则继续入栈。因为正确的式子最终总能遇到一个匹配的括号。例如:{3+a+[1+b+c*(1+2)]+3},可以最先检测出()这一对小括号,然后出栈,下一个待匹配括号[与]也可成功匹配。

    #include<iostream> 
    #include<stack>
    #include <string>
    
    using namespace std;
    
    int main()
    { 
        string str;
        int len,num;
        cin >> num;
        for(int j=1;j<=num;j++)
        {
            int error=0;
            cin>> str;
              len=str.length();
            stack<char> s;
            for(int i=1;i<=len;i++)
            {
                if(str[i-1]=='('||str[i-1]=='['||str[i-1]=='{')
                {
                    s.push(str[i-1]);
                }
                switch(str[i-1])
                {
                    case ')':
                    if(s.empty())
                    {
                        error = 1;
                    }
                    else
                    {
                        if(s.top()=='(')
                        {
                            s.pop();
                        }
                        else
                        {
                            error = 1;
                        }    
                    }
                    break;
    
                    case ']':
                    if(s.empty())
                    {
                        error = 1;
                    }
                    else
                    {
                        if(s.top()=='[')
                        {
                            s.pop();
                        }
                        else
                        {
                            error = 1;
                        }
                    }
                    break;
    
                    case '}':
                    if(s.empty())
                    {
                        error = 1;
                    }
                    else
                    {
                        if(s.top()=='{')
                        {
                            s.pop();
                        }
                        else
                        {
                            error = 1;
                        }
                    }
                    break;
                }
            } 
            if((s.empty())&&(error!=1))
            {
                cout<<"ok"<<endl;
            }
            else
            {
                cout<<"error"<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    visual studio disable git
    app常见性能测试点
    App测试流程及测试点(个人整理版)
    APP测试要点
    APP端测试常见的功能点
    一文搞懂性能测试常见指标
    为什么会有生产bug?
    线上出了bug,是谁的责任?
    生产上线发现重大Bug的思考
    项目上线后出现Bug,该如何处理?
  • 原文地址:https://www.cnblogs.com/nathaneko/p/6491466.html
Copyright © 2020-2023  润新知