class Solution {
public:
bool leftBrace(char ch) {
return ch == '(' || ch == '{' || ch == '[';
}
bool isMatch(char lc, char rc) {
return lc == '(' && rc == ')' ||
lc == '{' && rc == '}' ||
lc == '[' && rc == ']';
}
bool isValid(string s) {
stack<char> st;
for (int i = 0; i < s.length(); ++i) {
if (leftBrace(s[i]))
st.push(s[i]);
else if (st.empty() || !isMatch(st.top(), s[i]))
return false;
else
st.pop();
}
return st.empty();
}
};