Problème
Divisez une durée en heures, minutes et secondes. Écrivez les unités sous la forme h, m et s, dans cet ordre, avec un espace entre chaque unité. Omettez toute unité dont la valeur est zéro, sauf que zéro seconde s'écrit 0s.
Implémentez format_duration(seconds).
Entrée
seconds : La durée totale en secondes.
Sortie
Retournez la durée formatée, par exemple 2h 2m 5s.
Contraintes
0 ≤ seconds ≤ 1 000 000 000. Le nombre d'heures peut dépasser 23 ; il s'agit d'une durée, pas d'une heure de la journée.
Exemples
Entrée :
seconds = 7325
Sortie attendue :
expected = "2h 2m 5s"
Entrée :
long long seconds = 7325;
Sortie attendue :
std::string expected = "2h 2m 5s";
Entrée :
long seconds = 7325;
Sortie attendue :
string expected = "2h 2m 5s";
Explication
7325 = 2 × 3600 + 2 × 60 + 5.
Entrée :
seconds = 120
Sortie attendue :
expected = "2m"
Entrée :
long long seconds = 120;
Sortie attendue :
std::string expected = "2m";
Entrée :
long seconds = 120;
Sortie attendue :
string expected = "2m";
Explication
120 secondes correspondent exactement à 2 minutes. Omettez les heures et secondes à zéro.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Décompose le total de secondes en unités plus grandes d’abord, puis formate seulement les parties non nulles.
Indice 2
Garde les heures, minutes et secondes dans cet ordre, avec des espaces entre les unités incluses.
Indice 3
Si toutes les unités plus grandes valent zéro, assure-toi quand même que la sortie soit exactement 0s quand la durée est nulle.
Complexité attendue
temps O(1), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.