Volver a los desafíos
Fácil 0 resueltos 0% de aceptación

Horas, minutos y segundos

Convierte una duración en segundos a una cadena legible y compacta.

Lo que aprenderás

  • Dividir segundos en horas, minutos y segundos
  • Usar división y resto juntos
  • Dar formato legible a las partes

Problema

Ver original (inglés)

Divide una duración en horas, minutos y segundos. Escribe las unidades como h, m y s, en ese orden, con un espacio entre cada unidad. Omite cualquier unidad cuyo valor sea cero, excepto que los segundos cero se escriben como 0s.

Implementa format_duration(seconds).

Entrada

seconds: La duración total en segundos.

Salida

Devuelve la duración formateada, por ejemplo 2h 2m 5s.

Restricciones

0 ≤ seconds ≤ 1,000,000,000. Las horas pueden ser mayores que 23; esto es una duración, no una hora del día.

Ejemplos

Ejemplo 1
Entrada:
seconds = 7325

Salida esperada:
expected = "2h 2m 5s"
Entrada:
long long seconds = 7325;

Salida esperada:
std::string expected = "2h 2m 5s";
Entrada:
long seconds = 7325;

Salida esperada:
string expected = "2h 2m 5s";

Explicación

7325 = 2 × 3600 + 2 × 60 + 5.

Ejemplo 2
Entrada:
seconds = 120

Salida esperada:
expected = "2m"
Entrada:
long long seconds = 120;

Salida esperada:
std::string expected = "2m";
Entrada:
long seconds = 120;

Salida esperada:
string expected = "2m";

Explicación

120 segundos son exactamente 2 minutos. Se omiten las horas y los segundos si son cero.

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Divide los segundos totales primero en unidades mayores y luego formatea solo las partes no nulas.

Pista 2

Mantén horas, minutos y segundos en ese orden, con espacios entre las unidades incluidas.

Pista 3

Si todas las unidades mayores son cero, asegúrate igualmente de que la salida sea exactamente 0s cuando la duración sea cero.

Complejidad esperada

tiempo O(1), espacio extra O(1)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.