簡単 0件解決済み 正答率0%

時間、分、秒

秒数で与えられた期間を、簡潔で読みやすい文字列に変換してください。

このチャレンジで学べること

  • 秒を時間、分、秒に分ける
  • 除算と剰余を組み合わせる
  • 各部分を読みやすい文字列に整形する

問題

原文(英語)を表示

期間を時間、分、秒に分割してください。単位はそれぞれ 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用に調整されています。上記の説明と制約に従ってください。

他の人の解答から学ぶ

コミュニティの解答

まだ公開された解答がありません。この課題を解いて最初の解答を共有しましょう。