class Solution: def isValid(self, s: str) -> bool: def rcg_type(ch) -> int: if ch[0] =='(': return 1 if ch[0] ==')': return 2 if ch[0] =='{': return 3 if ch[0] =='}': return 4 if ch[0] =='[': return 5 if ch[0] ==']': return 6 stack = [] top_idx = -1 def is_empty(): return top_idx == -1 def set_ele(stack: list, idx: int, ele: int): if len(stack) <= idx: stack.append(ele) else: stack[idx] = ele for ch in s: tp = rcg_type(ch) if tp % 2 == 1: top_idx += 1 set_ele(stack, top_idx, tp) else: if is_empty(): return False top_ele = stack[top_idx] if tp - top_ele != 1: return False top_idx -= 1 if not is_empty(): return False return True sol = Solution() print(sol.isValid("()")) print(sol.isValid("(){}[]")) print(sol.isValid("(]")) print(sol.isValid("[(])"))