Llamamos a un grupo de padres el par abierto (, su par cercano )y todo lo que hay dentro de ellos.
Un grupo o cadena parenteral se llama entre paréntesis equilibrados si no contiene nada o solo 2 grupos parentales entre paréntesis.
Por ejemplo:
The string "(()())()" is parenthesly balanced
( )() Because it contains exactly 2 parenthesly balanced parens groups
()() The left one is parenthesly balanced because it contains 2 parenthesly balanced parens groups (balanced because they are empty). The right one is parenthesly balanced because it contains nothing.
Igualmente:
The string "(()(()))()" is not parenthesly balanced
( )() Because it contains a parens group that is not parenthesly balanced: the left one
()( ) The left one is not balanced because it contains a parens group that is not balanced: the right one
() The right one is not balanced because it only contains one balanced group.
Por lo tanto, una cadena entre paréntesis equilibrada o un grupo parens debería:
- No contienen nada en absoluto.
- O contenga solo y exactamente 2 grupos parensos equilibrados entre paréntesis. No debe contener nada más.
Tarea:
Su tarea es escribir una función o programa que verifique si una cadena dada es paréntesis balanceada o no.
Entrada:
La entrada será una cadena o lista de caracteres o algo similar. Puede suponer que la cadena solo constará de los caracteres '('y ')'. También puede suponer que cada par abierto (tendrá su par cercano ), así que no se preocupe por cadenas como "((("o ")("o "(())("...
Nota: Como se ha mencionado por @DigitalTrauma en su comentario abajo, que está bien subtitute el ()combo por otros caracteres (tales como <>, [], ...), si es que causa un trabajo adicional como escapar en algunos idiomas
Salida:
Cualquier cosa para indicar si la cadena está entre paréntesis equilibrada o no (verdadero o falso, 1 o 0, ...). Incluya en su respuesta lo que se espera que produzca su función / programa.
Ejemplos:
"" => True
"()()" => True
"()(()())" => True
"(()(()(()())))(()())" => True
"(((((((()())())())())())())())()" => True
"()" => False
"()()()" => False
"(())()" => False
"()(()(())())" => False
"(()())(((((()())()))())())" => False
"()(()()()())" => False
"()(()(()())()())" => False
¡Los dos últimos ejemplos realmente marcaron la diferencia!
¡La mejor de las suertes!
"(()())()"se representaría como [0, 0, 1, 0, 1, 1, 0, 1]. Esto eliminaría la necesidad de convertir la entrada al código de caracteres y luego restar.
