Balanced Brackets Problem HackerRank
Tue Feb 27 2018
Nice problem for that is used on all of our IDEs
simply checking if our brackets fit together.
Problems description here
Solution Brief: {#solutionbrief}
Simply running through each char in the string, checking if its a bracket or not. On our case, it always brackets.
Now if it’s an opening bracket push it into our stack.
If it’s a closing bracket, make sure stack is not empty, cause if so the string is not balanced.
Pop the last bracket from the stack and make sure they are balanced together.
Pseudo Code: {#pseudocode}
stack
for c in str
if opener, push to stack, next loop
if closer
if stack is empty, NOT balanced
pop last item from stack
compare the 2,
if not brothers, NOT balanced
if stack is empty
its balanced
else
its not
Solution Code: {#solutioncode}
def isCloser(char):
closers = ['}', ']', ')']
return char in closers
def isOpener(char):
openers = ['{', '[', '(']
return char in openers
def isBrothers(opener, closer):
return (opener=='{' and closer=='}') or (opener=='[' and closer==']') or (opener=='(' and closer==')')
def is_matched(str):
stack = []
for char in str:
if isOpener(char):
stack.append(char)
continue
if isCloser(char):
if (len(stack)==0):
return False
prev = stack.pop()
if not isBrothers(prev, char):
return False
return len(stack) == 0
res = is_matched('{[()](})')
print res