使用C++ STL <stack>容器,快速实现括号匹配。
#include<stack>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
int main()
{
char temp[1000];
int len;
memset(temp,0,sizeof(temp));
stack<char> queue;
cin>>temp;
bool flag;
len=strlen(temp);
flag=1;
for(int i=0;i<len;i++)
{
char temp2=temp[i];
switch(temp2)
{
case '(':
case '[':
case '{':
queue.push(temp2);
//左括号入栈
break;
//出现右括号则与栈顶元素做比较,配对共同出栈,不配对结束。
case ')':
if(queue.top()!='(')
flag=0;
else
queue.pop();
break;
case '}':
if(queue.top()!='{')
flag=0;
else
queue.pop();
break;
case ']':
if(queue.top()!='[')
flag=0;
else
queue.pop();
break;
}
}
if(queue.empty()!=1)
{
flag=0;
}
if(flag==1)
cout<<"匹配";
else
cout<<"不匹配";
return 0;
}