判断一个括号字符串是否匹配正确,如果括号有多种,怎么做?
#include<iostream>
#include<string>
#include<stack>
using namespace std;
bool IsMatch(string str)
{
int i=0;
stack<char> stk;
bool flag=true;
while(i<str.size()&&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;
}
int main()
{
string str="()[{]}";
if(IsMatch(str))
cout<<"Match!"<<endl;
else
cout<<"Not Match!"<<endl;
system("pause");
return 0;
}