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.
如果为左括号则压入栈中,如果不为左括号则弹出栈顶判断是否成对
/************
* LeetCode Runtime : 0ms;
* last edited date:2015-10-14
* .cpp
*****/
class Solution {
public:
bool isValid(string s) {
stack<char> brackets;
for (size_t i = 0; i < s.size(); i++){
if (validLeft(s[i])){
brackets.push(s[i]);
}
else{
if (brackets.empty()) return false;
if (!validBrackets(brackets.top(), s[i]))
return false;
brackets.pop();
}
}
return brackets.empty();
}
//判断是否为成对的括号
bool validBrackets(char l, char r){
switch (l){
case '(': if (r != ')') return false; break;
case '{': if (r != '}') return false; break;
case '[': if (r != ']') return false; break;
default: return false;
}
return true;
}
//判断是否为左括号
bool validLeft(char c){
return ((c == '(' || c == '{' || c == '[')) ? true : false;
}
};