Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

113
Visualizações
If-statement ejecuta todo menos return-statement

Estoy tratando de entender cómo funcionan las pilas a través del código. Ahora, traté de escribir un programa simple de coincidencia de corchetes: escribí la implementación de la lista vinculada y la usé para implementar la pila en JS. La idea es iterar a través de todos los caracteres de la cadena y colocar corchetes abiertos en la pila. Después de esto, si no hay un paréntesis que coincida con el paréntesis superior, la función debería devolver falso. El problema principal es que la declaración if ejecuta todo menos la declaración de retorno.

Entrada: ([(a()]])

Salida deseada: false

 function isBalanced(string) { let stack = new Stack(); [...string].forEach(char => { let bracket if (char === '[' || char === '(') { stack.push(char) } else { if (stack.isEmpty()) { return false } bracket = stack.pop().data console.log(`PAIR: ${bracket}${char}`) if (!(bracket === "[" && char === "]") && !(bracket === "(" && char === ")")) { console.log("working") return false } }}); return stack.isEmpty(); } let string = '([(a()]])' console.log(isBalanced(string))

He usado console.log() para verificar si mi declaración funciona y en qué pares funciona.

La salida en la consola se ve así:

 PAIR: (a working PAIR: () PAIR: [] PAIR: (] working true

Como puede ver, cuando la declaración es verdadera, definitivamente funciona, pero no llama a la declaración de retorno interna (después de la primera salida 'working' , no debería haber más pares en la consola; simplemente false ). ¿Dónde está el problema?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede usar Array#every junto con la verificación de longitud de la pila y regresar dentro de la devolución de llamada para cada carácter correcto true .

 function isBalanced(string) { const closed = { '(': ')', '[': ']' }, stack = []; return [...string].every(char => { if (char === '[' || char === '(') { stack.push(char); return true; } if (!stack.length) return false; const bracket = stack.pop(); console.log(`PAIR: ${bracket}${char}`); return closed[bracket] === char; }) && !stack.length; } console.log(isBalanced('(([()]))')); console.log(isBalanced('([(a()]])'));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda