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

 

Constraints:

  • 1 <= s.length <= 104
  • s consists of parentheses only '()[]{}'.




 class Solution:
    def isValid(self, s: str) -> bool:
        self.stack = []
        opening = {'(': ")", '{': "}", '[':"]"}
        for bracket in s:
            if bracket in opening.keys():
                self.stack.append(bracket)
            else:
                if self.stack:
                    saved = self.stack.pop()
                    if opening[saved] == bracket:
                        continue
                    else:
                        return False
                else:
                    return False

        return len(self.stack) == 0

Random Note


when you have something circular, most of the time you can have one variableand another can be calculated using size, current value and doing %