es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo encontrar la secuencia más larga de ceros en la representación binaria de un número entero en JavaScript?

Bien, en esta pregunta tengo que encontrar la secuencia más larga de ceros en la representación binaria de un número entero.
Después de mucho trabajo duro, logro encontrar la secuencia más larga de ceros con mi lógica, la cual cambié varias veces.
Tengo un problema con mi lógica, que es si ingreso un número entero que no tiene brecha, debería darme una respuesta de 0, lo cual intenté hacer por mí mismo pero no lo logré.
Actualmente, si ingreso un número entero que no tiene brecha, me da una salida infinita.
Quiero que mi respuesta imprima 0 cuando la representación binaria de un número entero no tiene brechas.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para imprimir 0 cuando la representación binaria de un número entero no tiene brechas, podemos agregar una declaración if para verificar si el arreglo “gaps” está vacío. Si lo está, simplemente podemos imprimir 0 como la secuencia más larga de ceros.

    var dn = prompt("Ingrese un número: ");
    var bn = new Array();
    var i = 0;
    var binario = [];
    
    while (dn != 0) {
      bn[i] = dn % 2;
      dn = Math.floor(dn / 2);
      i++;
    }
    
    for (var j = i - 1; j >= 0; j--) {
      binario.push(bn[j]);
    }
    console.log(binario.join(""));
    
    var brechaActual = 0;
    var brechas = [];
    var len = binario.length;
    
    for (var k = 0; k < len; k++) {
      if (binario[k] == 0) {
        brechaActual++;
        if (binario[k + 1] == 1) {
          brechas.push(brechaActual);
          brechaActual = 0;
        }
      }
    }
    
    if (brechas.length == 0) {
      console.log(0);
    } else {
      console.log(Math.max(...brechas));
    }
    

Comments are closed.