Description
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.
Solution
使用栈来处理最近匹配问题
bool isValid(string s) {
map<char, char> parenthesesMap{{'(', ')'}, {'[', ']'}, {'{', '}'}};
stack<char> st;
for (int i = 0; i < s.length(); ++i) {
if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
st.push(s[i]);
} else {
if (st.empty() || parenthesesMap[st.top()] != s[i]) {
return false;
}
st.pop();
}
}
return st.empty();
}