scala - programa - Repetición del algoritmo de equilibrio entre paréntesis
pila python 3 (1)
Este código verifica recursivamente si la cadena contiene la cantidad correspondiente de paréntesis de apertura y cierre llamando a balanced () en la cadena sin primer elemento.
La expectativa de paréntesis en la cadena se mantiene en una especie de indicador de saldo abierto : los positivos indican la cantidad de '''' necesaria '''' y la cantidad de elementos necesarios '''' (''''. El saldo inicial es 0.
Cuando la recursión llega al final de la cadena, comprueba si el saldo está bien (abre == 0), por ejemplo, se observó la cantidad correspondiente de paréntesis.
También hay un cheque (abrir> 0) para asegurarse de que '')'' no se encontró antes de que hubiera ''('' podría cerrarse.
¿Alguien puede explicarme el algoritmo para el problema de Equilibrado de paréntesis?
"¿Es correcta la sintaxis de la cadena (código) a cuenta de las parejas de paréntesis que coinciden?"
No puedo resolverlo aparte del hecho de que para cada "(" debería haber otro ")" para que el algoritmo devuelva verdadero.
¡Gracias!
Encontré esta solución pero no la entiendo y no quiero copiarla y pegarla:
def balance(chars: List[Char]): Boolean = {
def balanced(chars: List[Char], open: Int): Boolean = {
if (chars.isEmpty) open == 0
else
if (chars.head == ''('') balanced(chars.tail,open+1)
else
if (chars.head == '')'') open>0 && balanced(chars.tail,open-1)
else balanced(chars.tail,open)
}
balanced(chars,0)
}