Created
May 2, 2019 17:11
-
-
Save maybe-hello-world/25f54b096806fffbedb53cfa75c98f03 to your computer and use it in GitHub Desktop.
bracket sequence checker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# rather funny that I give my students exactly this task :) | |
from typing import Iterable | |
def check_brackets(brckt_seq: Iterable[str]) -> bool: | |
""" | |
Check whether bracket sequence is correct or not | |
:param brckt_seq: str of brackets (with different types) | |
:return: True if bracket sequence is correct, False otherwise | |
""" | |
# maybe should be parameter, depends if it changeable | |
available_brackets = { | |
')': '(', | |
'}': '{', | |
'>': '<', | |
']': '[' | |
} | |
stack = list() | |
# save every opening bracket to stack and pop&check on every closing bracket | |
for i in brckt_seq: | |
if i in available_brackets: | |
if not stack: | |
# empty stack -> there were no corresponding opening bracket | |
return False | |
# non-corresponding bracket returned from stack | |
if stack.pop() != available_brackets[i]: | |
return False | |
else: | |
stack.append(i) | |
if stack: | |
# there are odd opening brackets | |
return False | |
return True |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment