栈 括号匹配

来源:互联网 发布:js文字大小变化效果 编辑:程序博客网 时间:2024/06/02 07:30


遇到所有的左括号,入栈,(标记为1,【标记为2,{标记为3

遇到所有的右括号,取栈顶元素,)相对应的是否为1,】是否为2,}是否为3

如果不是,break出来

#include <iostream>#include<stack>#include<stdio.h>#include<string.h>using namespace std;int main(){    char a[100];    int i,flag=0,len;    stack<int> s;    gets(a);    len=strlen(a);    for(i=0;i<=len-1;i++){        if(a[i]=='(')            s.push(1);          //左括号标记入栈        if(a[i]=='[')            s.push(2);        if(a[i]=='{')            s.push(3);        if(a[i]==')'){          //右括号对比出栈            if(s.empty()==1){                flag=1;                break;            }            else{                if(s.top()==1)                    s.pop();                else{                    flag=1;                    break;                }            }        }        if(a[i]==']'){            if(s.empty()==1){                flag=1;                break;            }            else{                if(s.top()==2)                    s.pop();                else{                    flag=1;                    break;                }            }        }        if(a[i]=='}'){            if(s.empty()==1){                flag=1;                break;            }            else{                if(s.top()==3)                    s.pop();                else{                    flag=1;                    break;                }            }        }    }    if(flag==0)        if(s.empty()==1)            printf("YES\n");        else            printf("NO\n");    else        printf("NO\n");    return 0;}


原创粉丝点击