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

190
Visualizações
Complejidad de tiempo y espacio de esta verificación si la cadena es palíndromo

Quiero verificar mis suposiciones sobre la complejidad del tiempo y el espacio de dos implementaciones diferentes de funciones de palíndromo válidas en JavaScript.

En la primera implementación estamos usando una función auxiliar y solo pasamos punteros

 const isPalindrome = str => { return isPalindromeHelper(str, 0, str.length - 1); } const isPalindromeHelper = (str, start, end) => { if (end - start < 1) return true; return str[start] === str[end] && isPalindromeHelper(str, start + 1, end - 1) }

En este caso, asumo que la complejidad del tiempo es O(N) y la complejidad del espacio también es O(N).

Sin embargo, digamos que en lugar de pasar punteros estamos cortando la cadena cada vez. Y digamos que el slice es una operación O(n).

 const isPalindrome = str => { if (str.length <= 1) return true; if (str[0] !== str[str.length - 1]) return false; return isPalindrome(str.slice(1, str.length - 1)); }

¿Esto empujaría la complejidad del tiempo y el espacio a O (N ^ 2) si el segmento fuera una operación O (N)? ¿El tiempo debido a la complejidad del tiempo de la porción y el espacio aumentaría ya que constantemente estamos creando nuevas cadenas?

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

0

¿Esto empujaría la complejidad del tiempo y el espacio a O (N ^ 2) si el segmento fuera una operación O (N)? Tiempo debido a la complejidad del tiempo de la slice ...

Sí, si asumimos que slice tiene una complejidad temporal de O(𝑛), entonces tenemos O(𝑛−1 + 𝑛−2 + 𝑛−3 + ... + 1) que es O(𝑛²)

... y el espacio aumentaría ya que constantemente estamos creando nuevas cadenas?

Nuevamente, si asumimos que el slice asigna nueva memoria para el segmento, entonces tenemos (con la misma fórmula) un uso de espacio de O(𝑛²)

Sin embargo...

Como las cadenas son inmutables, un motor de JavaScript puede beneficiarse de la memoria que ya tiene la cadena y no asignar realmente memoria nueva para segmentos. Esto se llama internamiento de cadenas . Esto podría devolver la complejidad tanto del tiempo como del espacio a O(𝑛). Sin embargo, dado que no existe ningún requisito en la especificación del lenguaje EcmaScript para hacer esto, no tenemos ninguna garantía.

about 4 years ago · Juan Pablo Isaza Relatório

0

Ambos son operaciones recursivas y se ejecutan a lo largo de toda la cadena (n) n/2 veces desde que comienzan en 0 y en n - 1 y se ejecutan hasta que se encuentran en n/2 .

En la notación O, esto significaría que ambos son O(n) ya que puedes ignorar la constante 2 .

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