Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Brackets by Haradd
def bracket(open,close):
if (open=="(" and close==")") or (open=="[" and close=="]") or (open=="{" and close=="}"):
return True
return False
def checkio(expression):
openc=0
closec=0
toclose=False
o=[]
for w in expression:
if w=="(" or w=="[" or w=="{":
o.append(w)
toclose=True
openc+=1
else:
if w==")" or w=="]" or w=="}":
closec+=1
if toclose==False or o==[]:
return False
if bracket(o.pop(),w)==False:
return False
if openc==closec:
return True
return False
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio("((5+3)*2+1)") == True, "Simple"
assert checkio("{[(3+1)+2]+}") == True, "Different types"
assert checkio("(3+{1-1)}") == False, ") is alone inside {}"
assert checkio("[1+1]+(2*2)-{3/3}") == True, "Different operators"
assert checkio("(({[(((1)-2)+3)-3]/3}-3)") == False, "One is redundant"
assert checkio("2+3") == True, "No brackets, no problem"
Oct. 31, 2016