leetcode/20-240526-pass/main.py
2024-05-25 12:01:35 +02:00

43 lines
1.2 KiB
Python

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("[(])"))