zoukankan      html  css  js  c++  java
  • 基础数据结构-堆栈-拓展:括号匹配

    这是一个考察对堆栈概念理解的应用,输入一串带括号的式子,检查其中的括号是否前后对应。思路是当遇到括号是入栈,并在下次遇到括号时检测是否与上一个入栈的括号匹配为一对,不是则继续入栈。因为正确的式子最终总能遇到一个匹配的括号。例如:{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;
    }
  • 相关阅读:
    Flask使用mysql数据池
    Flask之WTForms
    Flask用Flask-SQLAlchemy连接MySQL
    Flask之中间件
    Flask之session相关
    Flask之请求和响应
    Flask路由系统与模板系统
    Flask之基本使用与配置
    Flask知识总汇
    Flask之视图函数
  • 原文地址:https://www.cnblogs.com/nathaneko/p/6491466.html
Copyright © 2011-2022 走看看