Description:
Given a string containing just the characters ‘(‘, ‘)‘, ‘{‘, ‘}‘, ‘[‘ and ‘]‘, determine if the input string is valid.
The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.
Code:
bool isValid(string str) {
size_t n = str.length();
stack<char>s;
for (int i = 0; i < n; ++i)
{
//要注意及时检查栈是否为空,因为不能对空栈调用top函数
if (s.empty() || str[i] == ‘(‘ || str[i] == ‘{‘ || str[i] == ‘[‘)
s.push(str[i]);
else
{
char c = s.top();
if ( (c== ‘(‘ && str[i] == ‘)‘)
|| (c== ‘[‘ && str[i] == ‘]‘)
|| (c== ‘{‘ && str[i] == ‘}‘) )
s.pop();
else
return false;
}
}
return (s.empty()==true)?true:false;
}
原文:http://www.cnblogs.com/happygirl-zjj/p/4574569.html