# 20 Valid Parentheses

Given a string `s` containing just the characters `'('`, `')'`, `'{'`, `'}'`, `'['` and `']'`, determine if the input string is valid.

An input string is valid if:

1. Open brackets must be closed by the same type of brackets.
2. Open brackets must be closed in the correct order.

Example 1:

``````Input: s = "()"
Output: true
``````

Example 2:

``````Input: s = "()[]{}"
Output: true
``````

Example 3:

``````Input: s = "(]"
Output: false
``````

Example 4:

``````Input: s = "([)]"
Output: false
``````

Example 5:

``````Input: s = "{[]}"
Output: true
``````

Constraints:

• `1 <= s.length <= 104`
• `s` consists of parentheses only `'()[]{}'`.
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 `````` ``````class Solution: def isValid(self, s: str) -> bool: stack = [] mapping = {')': '(', '}': '{', ']': '['} for c in s: if c in mapping: if not stack or stack[-1] != mapping[c]: return False stack.pop() else: stack.append(c) return not stack``````
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 `````` ``````func isValid(s string) bool { var stack []byte for i := 0; i < len(s); i++ { c := s[i] if c == '(' || c == '[' || c == '{' { stack = append(stack, c) } else if c == ')' && len(stack) > 0 && stack[len(stack)-1] == '(' { stack = stack[:len(stack)-1] } else if c == ']' && len(stack) > 0 && stack[len(stack)-1] == '[' { stack = stack[:len(stack)-1] } else if c == '}' && len(stack) > 0 && stack[len(stack)-1] == '{' { stack = stack[:len(stack)-1] } else { return false } } return true }``````