# Leetcode 20. Valid Parentheses Description: Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets. Open brackets must be closed in the correct order. Every close bracket has a corresponding open bracket of the same type. Example 1: > Input: s = "()" > Output: true Example 2: > Input: s = "()[]{}" > Output: true Example 3: > Input: s = "(]" > Output: false Solution: Use **Stack** **Time complexity: O(n) (iterate through str) Space complexity: O(n) (stack could store n-opening parentheses)** ```python class Solution: def isValid(self, s: str) -> bool: # initialize an empty stack stack = [] # create a parentheses hashmap mapping = { ")": "(", "]": "[", "}": "{" } # iterate the str for c in s: # if c is the closing parentheses, peek the stack(and the stack should not be empty) if c in mapping: if stack and stack[-1] == mapping[c]: # parentheses is matched, pop the opening one stack.pop() # if c is the opening, we can always push into stack else: stack.append(c) # if stack is empty -> all parentheses are matched return True if not stack else False ```