Given a string containing just (, ), {, }, [, ], determine if the input string is valid.
A string is valid if:
- Open brackets are closed by the same type of bracket
- Open brackets are closed in the correct order
- Every close bracket has a corresponding open bracket
With "()[]{}"", return true. Each pair matches correctly.
With "(]", return false. The open paren doesn't match the close bracket.
With "([)]", return false. The brackets interleave incorrectly.
Constraints: length .