Here's the solution:
function isValid(s)
stack := empty stack
matchingBracket := {'(': ')', '{': '}', '[': ']'}
for each char in s
if char is in matchingBracket // it's an open bracket
push char onto stack
else // it's a close bracket
if stack is empty
return false
top := pop from stack
if matchingBracket[top] != char
return false
return stack is empty
Time: . Space: in the worst case.