Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
Cómo solucionar el problema en mi código de algoritmo "isParenthesisValid"

Estoy resolviendo una pregunta de algoritmo que requiere que me asegure de que los corchetes, paréntesis y llaves se coloquen en el orden o secuencia correctos.

Aquí hay un enlace a la pregunta, https://leetcode.com/problems/valid-parentheses/

A continuación se muestra un ejemplo:

condiciones para determinar si el patrón es correcto o no

Aquí está mi código para la solución:

 const isParenthesisValid = (params) => { myList = [] lastElement = myList[myList.length - 1] for (let i = 0; i < params.length; i++) { if (params[i] === "(" || params[i] === "[" || params[i] === "{" ) { myList.push(params[i]) } else if ((params[i] === ")" && lastElement === "(") || (params[i] === "]" && lastElement === "[") || (params[i] === "}" && lastElement === "{")) { myList.pop() } else return false } return myList.length ? false : true } // I get false as an answer everytime whether the pattern is correct or wrong // false console.log(isParenthesisValid("[()]"))

Pero no sé por qué siempre obtengo falso, comparé mi respuesta con la respuesta de otra persona que hizo lo mismo, pero parece que estoy omitiendo algo que no es tan obvio.

Espero que alguien pueda señalar en mi código dónde me estoy equivocando.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su lastElement recupera el último elemento de la lista al comienzo del programa , cuando no existe tal elemento, por lo que siempre está undefined . En su lugar, debe recuperar el valor dentro del bucle.

 const isParenthesisValid = (params) => { myList = [] for (let i = 0; i < params.length; i++) { const lastElement = myList[myList.length - 1] if (params[i] === "(" || params[i] === "[" || params[i] === "{" ) { myList.push(params[i]) } else if ((params[i] === ")" && lastElement === "(") || (params[i] === "]" && lastElement === "[") || (params[i] === "}" && lastElement === "{")) { myList.pop() } else return false } return myList.length ? false : true } console.log(isParenthesisValid("[()]"))

O, un poco más legible:

 const isParenthesisValid = (input) => { const openDelimiters = []; for (const delim of input) { const lastElement = openDelimiters[openDelimiters.length - 1]; if (delim === "(" || delim === "[" || delim === "{") { openDelimiters.push(delim) } else if ((delim === ")" && lastElement === "(") || (delim === "]" && lastElement === "[") || (delim === "}" && lastElement === "{")) { openDelimiters.pop() } else return false } return openDelimiters.length === 0; } console.log(isParenthesisValid("[()]"))

Otro enfoque, vinculando cada delimitador con un objeto:

 const delims = { ')': '(', '}': '{', ']': '[', }; const isParenthesisValid = (input) => { const openDelimiters = []; for (const delim of input) { if ('([{'.includes(delim)) { openDelimiters.push(delim) } else if (')]}'.includes(delim) && openDelimiters[openDelimiters.length - 1] === delims[delim]) { openDelimiters.pop() } else return false } return openDelimiters.length === 0; } console.log(isParenthesisValid("[()]"))

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda