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

368
Visualizações
¿Cómo implementar un algoritmo para detectar si un número tiene 2 dígitos consecutivos?

Quiero crear una función que devuelva verdadero si un número tiene dígitos consecutivos o no,

ejemplo:

  • si la entrada es 11, devolverá verdadero
  • si la entrada es 21 devolverá falso
  • si la entrada es 323 devolverá falso porque aunque tengamos 3 repetidos no son consecutivos

Mi solución en este momento es transformar el número en una matriz y recorrer el número uno por uno, si el siguiente número es igual al número actual, simplemente devolvemos verdadero. Pero esto tiene un tiempo de complejidad de O (n) y me preguntaba si alguien puede encontrar una solución mejor.

Gracias

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

0

Podría decirse que existe una solución mejor en la que no necesita convertir el número en una cadena o matriz de números/carácter. Funciona de la siguiente manera:

  1. Inicialice una variable curr a -1 .
  2. Ejecute un ciclo while num > 0 y haga lo siguiente:
  • next_curr = num % 10
  • if next_curr == curr: return true
  • curr = next_curr
  • num = num / 10 (división entera)
  1. Si el bucle se completa, devuelve falso.

Este es un algoritmo de complejidad de tiempo O(log n) de un paso donde n es el número de entrada. La complejidad del espacio es O(1)

Tenga en cuenta que si bien su algoritmo también tenía una complejidad de tiempo O (log n O(log n) , realizó 2 pases y también tenía una complejidad de espacio de O(log n) .

No he escrito JS desde hace algún tiempo, pero aquí hay una posible implementación del algoritmo anterior en JS:

 function sameAdjacentDigits(num) { // to deal with negative numbers and // avoid potential problems when using Math.floor later num = Math.abs(num) let curr = -1 while (num > 0) { const nextCurr = num % 10 if (nextCurr == curr) return true curr = nextCurr num = Math.floor(num / 10) } return false }
about 4 years ago · Juan Pablo Isaza Relatório

0

Use algunas expresiones regulares y luego verifique lo que se encontró a través del comparador

 numbers_match = /(00|11|22|33|44|55|66|77|88|99)/; numbers_match.match("11")

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match

about 4 years ago · Juan Pablo Isaza Relatório

0

La forma más fácil de ejecutar esto es mediante el uso de expresiones regulares. No estoy seguro de cuál sería la efectividad del algoritmo, pero la solución podría ser

/(\d)\1/

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