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.

class Solution {
public:
	bool isValid(string s) {
		stack<char> stk;
		for (char h : s){
			if (stk.empty() || h == '(' || h == '{' || h == '['){
				stk.push(h);
			}
			else{
				if (h == ')'&&stk.top() == '('){
					stk.pop();
				}
				else if (h == '}'&&stk.top() == '{'){
					stk.pop();
				}
				else if (h == ']'&&stk.top() == '['){
					stk.pop();
				}
				else{
					stk.push(h);
				}
			}
		}
		return stk.empty();
	}
};