[pyar] [OT] - Checkeando parentesis balanceados.

Federico Heinz fheinz en vialibre.org.ar
Sab Jun 19 10:07:56 ART 2010


On 18/06/2010, Daniel Moisset wrote:
> Si es obligatorio usar una comprehension te diria algo con esta
> idea...
> def balanceado(s):
>     profundidades = [s[:index+1].count("(")-s[:index+1].count(")")
> for index in xrange(len(s)) ]
>     return (not s) or (all(p>=0 for p in profundidades) and
> profundidades[-1]=0)

Esto debería ser lineal, pero usa una variable global que estoy
seguro que se puede reemplazar por algo más cheto.

c = 0
def balanceado(s):
    global c
    c = 0
    def f(x):
        global c
        c = c+{'(': 1, ')': -1}[x]
        return c
    p = [f(x) for x in s]
    return (not s) or (all(x >= 0 for x in p) and p[-1] == 0)

	Fede



More information about the pyar mailing list