Created
December 17, 2014 21:36
-
-
Save koalahamlet/6c57f13df5090da99b55 to your computer and use it in GitHub Desktop.
This file contains 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
openers_to_closers_map = { | |
'(' : ')', | |
'{' : '}', | |
'[' : ']' | |
} | |
openers = openers_to_closers_map.keys() | |
closers = openers_to_closers_map.values() | |
def is_valid(code): | |
openers_stack = [] | |
for char in code: | |
if char in openers: | |
openers_stack.append(char) | |
elif char in closers: | |
if not openers_stack: | |
return False | |
else: | |
last_unclosed_opener = openers_stack.pop() | |
# if this closer doesn't correspond to the most recently | |
# seen unclosed opener, short-circuit, returning false | |
if not openers_to_closers_map[last_unclosed_opener] == char: | |
return False | |
return openers_stack == [] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment