Given a string `s` containing just the characters `(`, `)`, `{`, `}`, `[` and `]`, determine if the input string is valid.
A string is valid if:
1. Open brackets are closed by the same type.
2. Open brackets are closed in the correct order.
3. Every close bracket has a corresponding open bracket.
**Example 1:**
```
Input: s = "()"
Output: true
```
**Example 2:**
```
Input: s = "()[]{}"
Output: true
```
**Example 3:**
```
Input: s = "(]"
Output: false
```