def parenMatch(expr): # symboles de gauche aGauche = "({[" # symboles de droite aDroite = ")}]" # utilise pile S S = ListStack() # pour chaque caractère dans l'expression for c in expr: # si on rencontre un caractère de gauche if c in aGauche: # on l'empile S.push(c) elif c in aDroite: # si on a un symbole de droite if S.is_empty(): # si la pile est vide, pas de match return False if aDroite.index(c) != aGauche.index(S.pop()): # si le symbole à droite ne match pas le symbole à gauche return False # ici, si la pile est vide, l'expression est balancée # sinon il reste un ou des symbole(s) non balancés dans la pile return S.is_empty()
def parenMatch(expr): aGauche = "({[" aDroite = ")}]" S = ListStack() for c in expr: if c in aGauche: #si à symbole ouvrant, on empile S.push(c) elif c in aDroite: #si à symbole fermant... if S.is_empty(): #si pile vide pas de match return False if aDroite.index(c) != aGauche.index(S.pop()): #si symbole fermant ne match pas symbole ouvrant return False #match si pile vide, sinon symbole(s) non matché(s) return S.is_empty()