Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
Input: "()"
Output: true
分析:
验证括号的有效性,可以利用栈的先入后出特性。若当前字符为左括号,压入栈中;若为右括号,若此时栈为空,返回false,不为空取栈顶元素,若不为对应的左括号则为false,否则弹出栈顶有效的左括号。若最后压入栈中的左括号都被弹出即栈为空时,此时的括号都是有效的。
class Solution {
public:
bool isValid(string s) {
stack<char> st;
for(char c : s){//遍历字符c
if(c == '('|| c == '{' || c == '['){
st.push(c);
}else{
if(st.empty()) return false;
else if(c == ')' && st.top() != '(') return false;
else if(c == '}' && st.top() != '{') return false;
else if(c == ']' && st.top() != '[') return false;
else st.pop();
}
}
return st.empty();
}
};