括号匹配问题(二)


【问题描述】
  字符串中只含有括号(0,[]判断输入的字符串 中括号是否匹配。如果括号有互相包含的形式,从内到外必须是(0,[]例如。输入: [)]输出:YES ,而输入([]),([ )]都应该输出NO。

输入: 一个由括号组成的长度不超过255的字符串(前括号的数量大于等于后括号数量)。
输出: YES或NO。
【输入样例】
  ()()[][]
【输出标例】
  YES

 

复制代码
#include<iostream>
#include<cstring>
using namespace std;

char stack[100], a[100];
int top=0; 

void push(char x){
    if(top<strlen(a)){ 
        top++;
        stack[top]=x;
        cout<<"入栈顺序:"<<stack[top]<<" "<<endl; 
        return;
    }
}

void pop(){
    if(top>0){
        cout<<"出栈顺序:"<<stack[top]<<" "<<endl;
        top--;
        return;
    }
}

int getTop(){
    return top;
} 
int main(){
    cin>>a;
    // [()]
    for(int i=0; i<strlen(a); i++){
        // 入栈操作: 
        if(a[i]=='['){
            if(stack[top]!='('){
                push(a[i]);
            }else{
                cout<<"no";
                return 0;
            }
        }
        else if(a[i]=='('){
            push(a[i]); 
        }
        // 出栈操作:
        if(a[i]==')'&&stack[top]=='('||a[i]==']'&&stack[top]=='['){
            pop();
        } 
    }
    
    if(getTop()==0){
        cout<<"yes";
    }else{
        cout<<"no";
    }
    return 0;
}
复制代码

 

posted @   Hi,小董先生  阅读(110)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示