Problema
Dividi una durata in ore, minuti e secondi. Scrivi le unità come h, m e s, in quest'ordine, con uno spazio tra le unità. Ometti qualsiasi unità con valore zero, tranne che per zero secondi, che va scritto come 0s.
Implementa format_duration(seconds).
Input
seconds: La durata totale in secondi.
Output
Restituisci la durata formattata, ad esempio 2h 2m 5s.
Vincoli
0 ≤ seconds ≤ 1.000.000.000. Le ore possono superare 23; si tratta di una durata, non di un orario.
Esempi
Input:
seconds = 7325
Output atteso:
expected = "2h 2m 5s"
Input:
long long seconds = 7325;
Output atteso:
std::string expected = "2h 2m 5s";
Input:
long seconds = 7325;
Output atteso:
string expected = "2h 2m 5s";
Spiegazione
7325 = 2 × 3600 + 2 × 60 + 5.
Input:
seconds = 120
Output atteso:
expected = "2m"
Input:
long long seconds = 120;
Output atteso:
std::string expected = "2m";
Input:
long seconds = 120;
Output atteso:
string expected = "2m";
Spiegazione
120 secondi sono esattamente 2 minuti. Ometti le ore e i secondi pari a zero.
Come affrontarlo
Prova prima da solo, poi apri un suggerimento alla volta.
Suggerimento 1
Scomponi i secondi totali prima nelle unità più grandi, poi formatta solo le parti non nulle.
Suggerimento 2
Mantieni ore, minuti e secondi in quest’ordine, con spazi tra le unità incluse.
Suggerimento 3
Se tutte le unità maggiori sono zero, assicurati comunque che l’output sia esattamente 0s quando la durata è zero.
Complessità attesa
tempo O(1), spazio aggiuntivo O(1)
Riferimenti
Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.