Facebook
From Tiny Agouti, 3 Years ago, written in Python.
This paste is a reply to Ejercicio corchetes balanceados from jose - go back
Embed
\n# diccionario para saber cual es el cierre de cada simbolo
simbols = {
    "[": "]",
    "(": ")",
    "{": "}"
}
# devuelve True si es un simbolo de apertura si no es apertura devuelve None
False
def isopenSimbol(key):
    if key in simbols:
        return True
    else:
        return False

def parseString(stringtest):
    # array que usamos como una pila LIFO
    openStack = []
    for car in range(len(cadena)):
        currSimbol = stringtest[car]
        print(openStack)
        if isopenSimbol(currSimbol):
            openStack.append(currSimbol)
        else:
            stacksize = int(len(openStack)) # tamaño actual de la pila
            if stacksize>0: # si contiene elementos de apertura comparamos con el elemento detectado de cierre actual
                lastOpen = openStack[stacksize-1]
                if simbols[lastOpen] == currSimbol: # si el caracter actual es un caracter de cierre del ultimo abierto lo quitamos de la pila
                    openStack.pop() # quitamos el ultimo elemento de la pila
    if len(openStack)>=1:
        return False
    else:
        return True


## inicio
cadena = input("Introduce cadena ")
tamcadena = len(cadena)

if tamcadena % 2 != 0 and isopenSimbol(cadena[0]) == False: # numero de elementos impares o el primero es un cierre
    print("Error")
else:
    if parseString(cadena):
        print(f"cadena  {cadena} correcta")
    else:
        print(f"cadena  {cadena} incorrecta")