此类问题提一论用栈解决;
这里为了方便 使用map保存键值对
#include <iostream>
#include <stack>
#include <map>
using namespace std;
bool isValid(string s)
{
int len = s.size();
if(len==0) return true;
stack<char> sta;
map<char,char> mp;
mp['(']=')';
mp['[']=']';
mp['{']='}';
for (int i = 0; i < len; i++)
{
if(s[i]=='('||s[i]=='{'||s[i]=='[')
{
sta.push(s[i]);
continue;
}
if(s[i]==']'||s[i]==')'||s[i]=='}')
{
if(sta.size()==0) return false;
char pre=sta.top();
sta.pop();
if(s[i]!=mp[pre])
{
return false;
}
}
}
if(sta.size()!=0) return false;
return true;
}
int main()
{
string test="(){}[]";
cout<<isValid(test)<<endl;
cout<<isValid("({[}])")<<endl;
return 0;
}