Skip to content

Instantly share code, notes, and snippets.

@maybe-hello-world
Created May 2, 2019 17:11
Show Gist options
  • Save maybe-hello-world/25f54b096806fffbedb53cfa75c98f03 to your computer and use it in GitHub Desktop.
Save maybe-hello-world/25f54b096806fffbedb53cfa75c98f03 to your computer and use it in GitHub Desktop.
bracket sequence checker
# 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