题目:
判断一个括号字符串是否匹配正确,假设括号有多种。如(([]))正确,[[(()错误。
代码:
#include<iostream>
#include<string>
#include<stack>
using namespace std;
bool IsMatch(string str)
{
int i=0;
stack<char> stk;
bool flag=true;
while(str[i]!='\0'&&flag==true)
{
switch(str[i])
{
case '(':
case '[':
case '{':stk.push(str[i]);break;
case ']':
{
if(stk.top()=='[')
stk.pop();
else
flag = false;
break;
}
case ')':
{
if(stk.top()=='(')
stk.pop();
else
flag = false;
break;
}
case '}':
{
if(stk.top()=='{')
stk.pop();
else
flag = false;
break;
}
}
i++;
}
if(!stk.empty())
flag=false;
return flag;
}
void main()
{
string str;
char c;
while((c=cin.get())!='\n')//注意一组带空格的测试用例输入写法
str=str+c;
if(IsMatch(str))
cout<<"正确"<<endl;
else
cout<<"不正确"<<endl;
}