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.
题意:判断给定的一个括号串是否合法。
思路:利用栈,遇见左括号入栈,遇见右括号,配对则出栈或否则则报错。简单题,而且以前肯定遇到过,一次AC吧~
class Solution {
public:
bool isValid(string s) {
stack<char> stac;
stac.push('$');
int i = 0;
while (i < s.size()){
switch (stac.top()){
case '$':
if (s[i] == '(' || s[i] == '[' || s[i] == '{'){
stac.push(s[i]);
i++;
}
else
return false;
break;
case '(':
if (s[i] == ')'){
stac.pop();
i++;
}
else if (s[i] == '(' || s[i] == '[' || s[i] == '{'){
stac.push(s[i]);
i++;
}
else
return false;
break;
case '[':
if (s[i] == ']'){
stac.pop();
i++;
}
else if (s[i] == '(' || s[i] == '[' || s[i] == '{'){
stac.push(s[i]);
i++;
}
else
return false;
break;
case '{':
if (s[i] == '}'){
stac.pop();
i++;
}
else if (s[i] == '(' || s[i] == '[' || s[i] == '{'){
stac.push(s[i]);
i++;
}
else
return false;
break;
default:
return false;
break;
}
}
if (stac.top() == '$')
return true;
else
return false;
}
};