zoukankan      html  css  js  c++  java
  • 重写nyoj2——括号匹配

    #include "bits/stdc++.h"
    using namespace std;
    
    int comp(char s1,char s2){
        if((s1 == '(' && s2 == ')') || (s1 == '['&&s2 == ']')) return 1;
        if((s1 == '(' && s2 == '(')||(s1 == '(' && s2 == '[')||(s1 == '[' && s2 == '(')||(s1 == '[' && s2 == '[')) return 2;
    }
    
    
    
    int main()
    {
        int t;
        cin >> t;
        while(t--){
            string s;
            cin >> s;
            stack<char> st;
            int flag = 0;
            for(int i=0;i < s.size();i++){
                if(st.empty()){
                    if(s[i] == '('||s[i] == '[') st.push(s[i]);
                    else{
                        flag = 1;break;
                    }
                }
                else{
                    if(comp(st.top(),s[i]) == 1){
                        st.pop();
                    }
                    else{
                        st.push(s[i]);
                    }
                }
            }
            if(!st.empty()||flag == 1) cout << "No" << endl;
            else cout << "Yes" << endl;
        }
        return 0;
    }

    今天复习了数据结构,突然想重写这个问题,只写了10分钟吧,就AC了,记得第一次写的时候写了两个小时,代码又臭又长,有时候代码能力就是这么不知不觉的增长。。。

    分两种情况:1.栈空 2 栈非空

    最后判断是否break出来的或者栈中有残余

  • 相关阅读:
    Python基础实例001:数字组合问题
    Python集合
    标量、向量、矩阵、张量
    re模块函数之search
    Python常用字符串操作
    Python基础之元组
    Bai, IEEE 2019
    词嵌入
    RNN 训练时梯度爆炸和梯度消失的理解
    OCR 综述
  • 原文地址:https://www.cnblogs.com/cunyusup/p/10549976.html
Copyright © 2011-2022 走看看