Skip to content

Instantly share code, notes, and snippets.

@joe-henke
Last active December 1, 2016 21:09
Show Gist options
  • Save joe-henke/07aca39755b7b81e887496c6717f3c08 to your computer and use it in GitHub Desktop.
Save joe-henke/07aca39755b7b81e887496c6717f3c08 to your computer and use it in GitHub Desktop.
Checks For Brackets
# python3
import sys
class Bracket:
def __init__(self, bracket_type, position):
self.bracket_type = bracket_type
self.position = position
def Match(self, c):
if self.bracket_type == '[' and c == ']':
return True
if self.bracket_type == '{' and c == '}':
return True
if self.bracket_type == '(' and c == ')':
return True
return False
class Stack:
def __init__(self):
self.elements = []
def isEmpty(self):
if len(self.elements) == 0:
return True
else:
return False
def push(self, element):
self.elements.append(element)
def pop(self):
return self.elements.pop()
def peek(self):
return self.elements[(len(self.elements)-1)]
def size(self):
return len(self.elements)
if __name__ == "__main__":
text = sys.stdin.read()
brackets = Stack()
opening_brackets_stack = []
for i, next in enumerate(text):
if next == '(' or next == '[' or next == '{':
bracket = Bracket(next, i)
brackets.push(bracket)
pass
if next == ')' or next == ']' or next == '}':
if brackets.isEmpty() == True:
bracket = Bracket(next, i)
brackets.push(bracket)
break
topBracket = brackets.peek()
isMatch = topBracket.Match(next)
if isMatch:
brackets.pop()
pass
else:
bracket = Bracket(next, i)
brackets.push(bracket)
break
if brackets.isEmpty():
print("Success")
else:
print(brackets.elements[-1].position + 1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment