[LeetCode] 20 - Valid Parentheses
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)
{
if (s.size() == 0) {
return true;
}
if (s.size() % 2) {
return false;
}
stack<char> stack_;
for(int i = 0; i < s.size(); ++i) {
char c0 = s[i];
if(c0 == '(' || c0 == '[' || c0 =='{') {
stack_.push(c0);
}
else {
if (stack_.empty()) {
return false;
}
char& c1 = stack_.top();
if ( (c1 == '(' && c0 != ')') ||
(c1 == '[' && c0 != ']') ||
(c1 == '{' && c0 != '}') ) {
return false;
}
stack_.pop();
}
}
if (stack_.empty()) {
return true;
}
return false;
}
};