括号匹配问题(二)
【问题描述】
字符串中只含有括号(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; }

浙公网安备 33010602011771号