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) {
std::vector<char> ans;
for (int i = 0; i < s.size(); i++)
{
switch (s[i])
{
case '(': ans.push_back(s[i]); break;
case '[': ans.push_back(s[i]); break;
case '{': ans.push_back(s[i]); break;
case ')': if (ans.size() == 0 || ans[ans.size() - 1] != '(')
{
return false;
}
ans.pop_back();
break;
case ']': if (ans.size() == 0 || ans[ans.size() - 1] != '[')
{
return false;
}
ans.pop_back();
break;
case '}': if (ans.size() == 0 || ans[ans.size() - 1] != '{')
{
return false;
}
ans.pop_back();
break;
}
}
return ans.empty();
}
};