使用栈来维护前括号的序列,遇到每一个后括号判断对应的前括号是否正确。
class Solution {
public:
bool isValid(string s) {
stack<char> order;
for( int i=0;i<s.size();i++ )
{
if( s[i] == '(' || s[i] == '{' || s[i] == '[' )
{
order.push(s[i]);
}
else
{
if( order.empty() )
{
return false;
}
char temp = order.top();
order.pop();
if( (s[i] == ')' && temp != '(' ) || (s[i] == '}' && temp != '{') || (s[i] == ']' && temp != '[') )
{
return false;
}
}
}
if( order.empty() )
{
return true;
}
return false;
}
};