class Solution {
public:
bool isValid(string s) {
stack<char> st;
int N = s.size();
for(int i=0; i<N; i++){
if(s[i] == '(' || s[i] == '{' || s[i] == '['){
st.push(s[i]);
}else if(!st.empty()){
if(s[i] == ')' && st.top() == '('){
st.pop();
}else if(s[i] == '}' && st.top() == '{'){
st.pop();
}else if(s[i] == ']' && st.top() == '['){
st.pop();
}else return false; // test case like "(])"
}else return false; // test case like "]"
}
if(st.empty()) return true; // test case like "([])" -- balanced parentheses
else return false; // of no use
}
};