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.
题目要求判断括号是否匹配,可以通过栈来实现。
代码如下:
class Solution {
public:
bool isValid(string s) {
stack<char> opstack;
char c ;
for (int i=0; i<s.size(); i++)
{
c = s[i];
if ((c=='(') || (c=='[') || (c=='{'))
{
opstack.push(c);
}
else if ((c==')') || (c==']') || (c=='}'))
{
if (opstack.empty())
{
return false;
}
char tmp = opstack.top();
if ((c==')' && tmp=='(') || (tmp=='[' &&c==']' ) ||(tmp=='{' && c=='}'))
{
opstack.pop();
}else{
return false;
}
}
}
return opstack.empty();
}
};