Voltar para os desafios
Fácil 0 resolvidos 0% de aceitação

Horas, Minutos e Segundos

Converta uma duração em segundos para uma string compacta e legível.

O que você vai aprender

  • Dividir segundos em horas, minutos e segundos
  • Usar divisão e resto juntos
  • Formatar as partes em uma string legível

Problema

Ver original (inglês)

Divida uma duração em horas, minutos e segundos. Escreva as unidades como h, m e s, nessa ordem, com um espaço entre as unidades. Omitir qualquer unidade com valor zero, exceto que zero segundos deve ser escrito como 0s.

Implemente format_duration(seconds).

Entrada

seconds: A duração total em segundos.

Saída

Retorne a duração formatada, por exemplo 2h 2m 5s.

Restrições

0 ≤ seconds ≤ 1.000.000.000. As horas podem exceder 23; isto é uma duração, não um horário do dia.

Exemplos

Exemplo 1
Entrada:
seconds = 7325

Saída esperada:
expected = "2h 2m 5s"
Entrada:
long long seconds = 7325;

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

Saída esperada:
string expected = "2h 2m 5s";

Explicação

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

Exemplo 2
Entrada:
seconds = 120

Saída esperada:
expected = "2m"
Entrada:
long long seconds = 120;

Saída esperada:
std::string expected = "2m";
Entrada:
long seconds = 120;

Saída esperada:
string expected = "2m";

Explicação

120 segundos são exatamente 2 minutos. Omitir as horas e segundos zerados.

Como abordar

Tente sozinho primeiro e depois abra uma dica de cada vez.

Dica 1

Quebre o total de segundos em unidades maiores primeiro e depois formate só as partes não nulas.

Dica 2

Mantenha horas, minutos e segundos nessa ordem, com espaços entre as unidades incluídas.

Dica 3

Se todas as unidades maiores forem zero, ainda assim a saída deve ser exatamente 0s quando a duração for zero.

Complexidade esperada

O(1) tempo, O(1) espaço extra

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.