58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
# Link: https://leetcode.com/problems/valid-parentheses/description/
|
|
|
|
|
|
class Solution:
|
|
def isValid(self, s: str) -> bool:
|
|
c = [] # Checker stack
|
|
m = {
|
|
")": "(",
|
|
"}": "{",
|
|
"]": "[",
|
|
}
|
|
cb = m.keys()
|
|
op = m.values()
|
|
for char in s:
|
|
if len(c) == 0:
|
|
c.append(char)
|
|
continue
|
|
if char in op:
|
|
c.append(char)
|
|
continue
|
|
if char in cb:
|
|
if len(c) > 0 and c[-1] == m[char]:
|
|
c.pop()
|
|
continue
|
|
if len(c) > 0 and c[-1] != m[char]:
|
|
return False
|
|
if len(c) == 0:
|
|
return False
|
|
print(f"c = {c} (len={len(c)})")
|
|
return False if len(c) > 0 else True
|
|
|
|
|
|
if __name__ == "__main__":
|
|
tt = "()[]{}"
|
|
sol = Solution
|
|
print(f"Initial: {tt}")
|
|
print(sol().isValid(tt))
|
|
print("-" * 60)
|
|
tt = "()"
|
|
print(f"Initial: {tt}")
|
|
print(sol().isValid(tt))
|
|
print("-" * 60)
|
|
tt = "())"
|
|
print(f"Initial: {tt}")
|
|
print(sol().isValid(tt))
|
|
print("-" * 60)
|
|
tt = "([])"
|
|
print(f"Initial: {tt}")
|
|
print(sol().isValid(tt))
|
|
print("-" * 60)
|
|
tt = "("
|
|
print(f"Initial: {tt}")
|
|
print(sol().isValid(tt))
|
|
print("-" * 60)
|
|
tt = "(])"
|
|
print(f"Initial: {tt}")
|
|
print(sol().isValid(tt))
|
|
print("-" * 60)
|