问题描述
假设一个算术表达式中包含圆括号、方括号两种类型的括号,试编写一个判断表达式中括号是否匹配的程序,匹配返回Match succeed!,否则返回Match false!。
例
输入
包含圆括号、方括号两种类型括号的算术表达式
输出
匹配输出Match succeed!
不匹配输出 Match false!
例
样例
输入(1)
[1+2*(3+4*(5+6))]
输出(1)
Match succeed!
输入(2)
(1+2)*(1+2*[(1+2)+3)
输出(2)
Match false!
代码
#include<cstdio>
#include<stack>
using namespace std;
stack <char> q;
int main()
{
char c;
int i=0;
int count=0;
while((c=getchar())!='\n')
{
if(c>='0'&&c<='9')
{
continue;
}
else if((c=='+')||(c=='-')||(c=='*')||(c=='/'))
{
continue;
}
else
{
if(count==0)
{
q.push(c);
count++;
}
else
{
if(c=='('||c=='[')
{
q.push(c);
count++;
}
else if(c==')')
{
char tmp;
tmp=q.top();
if(tmp=='(')
{
q.pop();
count--;
}
else
{
q.push(c);
count++;
}
}
else if(c==']')
{
char tmp;
tmp=q.top();
if(tmp=='[')
{
q.pop();
count--;
}
else
{
q.push(c);
count++;
}
}
}
}
}
if(count==0)
{
printf("Match succeed!\n");
}
else
{
printf("Match false!\n");
}
return 0;
}