Problema
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
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.
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.