代码:
class Solution {
public:
bool isValid(string s) {
stack <char> stk;
for(int i = 0; i < (int)s.length(); i++)
{
if(s[i] == '(' || s[i] == '{' || s[i] == '[' || stk.empty())
{
stk.push(s[i]);
}
else
{
bool flag = false;// 如果没有元素出栈,说明括号不匹配,那么这个元素依然要进栈
if(s[i] == ')' && stk.top() == '(')
{
stk.pop(); flag = true;
}
if(s[i] == '}' && stk.top() == '{')
{
stk.pop(); flag = true;
}
if(s[i] == ']' && stk.top() == '[')
{
stk.pop(); flag = true;
}
if(!flag)
{
stk.push(s[i]);
}
}
}
if(stk.empty())
{
return true;
}
else
{
return false;
}
}
};