問題
期間を時間、分、秒に分割してください。単位はそれぞれ h、m、s とし、この順番で、各単位の間には半角スペースを 1 つ入れてください。値が 0 の単位は省略しますが、秒が 0 の場合のみ 0s と表記してください。
format_duration(seconds) を実装してください。
入力
seconds: 期間の合計秒数。
出力
フォーマットされた期間を返してください。例: 2h 2m 5s。
制約
0 ≤ seconds ≤ 1,000,000,000。時間は 23 を超えても構いません(これは時刻ではなく、期間です)。
例
例 1
入力:
seconds = 7325
期待される出力:
expected = "2h 2m 5s"
入力:
long long seconds = 7325;
期待される出力:
std::string expected = "2h 2m 5s";
入力:
long seconds = 7325;
期待される出力:
string expected = "2h 2m 5s";
解説
7325 = 2 × 3600 + 2 × 60 + 5。
例 2
入力:
seconds = 120
期待される出力:
expected = "2m"
入力:
long long seconds = 120;
期待される出力:
std::string expected = "2m";
入力:
long seconds = 120;
期待される出力:
string expected = "2m";
解説
120 秒はちょうど 2 分です。0 の時間と秒は省略してください。
解き方のヒント
まずは自分で考えてから、ヒントを 1 つずつ開いてみましょう。
ヒント 1
合計秒を大きい単位から分解し、0でない部分だけを整形する。
ヒント 2
hours、minutes、seconds の順に、含める単位の間をスペースでつなぐ。
ヒント 3
上位の単位がすべて0でも、durationが0なら出力は必ず 0s にする。
目安の計算量
時間 O(1)、追加メモリ O(1)
参考資料
この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。