ホームページ  >  記事  >  バックエンド開発  >  指定された会議時間を横切る間隔の数をカウントします。

指定された会議時間を横切る間隔の数をカウントします。

王林
王林転載
2023-08-31 20:13:04709ブラウズ

###############問題文###

12 時間の時間間隔を表す、開始時刻と終了時刻のペアを含む 2 次元配列が与えられました。同時に、12 時間で表現された文字列 str も与えられます。 str で表される時間を含む間隔の合計数を見つける必要があります。 指定された会議時間を横切る間隔の数をカウントします。

例例

###入力### リーリー ###出力### リーリー

説明

の中国語訳は次のとおりです:

説明

時刻「2:30:AM」は、前の 3 つの時間間隔と交差します。

###入力### リーリー ###出力### リーリー

説明

の中国語訳は次のとおりです:

説明

時刻「11:30:PM」は、配列で指定された時間間隔と交差しません。

方法 1

このメソッドでは、時間を 24 時間形式に変換します。次に、比較により、指定された時間と交差する時間間隔の合計数を計算します。さらに、substr() メソッドを使用して部分文字列を取得し、stoi() メソッドを使用して文字列を整数に変換します。

###アルゴリズム###

ステップ 1

- 時刻を 24 時間形式に変換するために、convertTime() 関数を定義します。

ステップ 1.1

*-replace() メソッドを使用して、3 番目の位置のコロンを空の文字列に置き換えます。

ステップ1.2
    *-指定された文字列から時間を表す最初と2番目の文字を取得し、最初の数値に10と2番目の数値を乗算して時間に変換します。
  • ステップ 1.3
  • - 「time_24」変数をゼロに初期化します。
  • ステップ 1.4
  • -時間を 24 時間形式に変換するには、2 つの状況を処理する必要があります。最初のケースは午前中に、2 番目のケースは午後に行われます。
  • ステップ 1.4.1
  • - 文字列の 5 番目の文字が「A」の場合、時刻は午前です。時刻が AM で、時が 12 に等しい場合、午前 12:00 を 00:00 とみなすため、文字列から分のみが抽出されます。それ以外の場合は、時刻文字列を整数値に変換します。
  • ステップ 1.4.2
  • - 文字列の 5 番目の文字が「P」の場合、時刻は午後です。時刻文字列を抽出して整数に変換します。さらに、時間が 12 に等しくない場合は、「time_24」変数に 1200 が追加されます。
  • ステップ 2
  • - ConvertTime() 関数は、次の形式で時間を返します。
  • 12:00:午前 = 0000

  • 12:58:午前 = 0059

  • 11:32:午前 = 1132
  • 11:32:午後 = 1200 1132 = 2332

    • 04:56:午後 = 1200 456 = 1656

    • 文字列の 5 番目の文字が「A」の場合、時刻は午前です。時刻が AM で、時が 12 に等しい場合、午前 12:00 を 00:00 とみなすため、文字列から分のみが抽出されます。それ以外の場合は、時刻文字列を整数値に変換します。

    • ステップ 3

      - 指定された時刻文字列を 24 時間形式に変換します。

    • ステップ 4
    • - for ループを使用して時間間隔配列を走査し、各時間文字列を 24 時間形式に変換します。
    ステップ 5
  • - 一方、指定された時間文字列が現在の間隔の間にあるかどうかの確認を続けます。その場合は、「res」の数を 1 増やします。
  • ステップ 6
  • - 「res」変数の値を返します。
  • Example

    の翻訳は次のとおりです:
  • Example
  • リーリー ###出力### リーリー

    時間計算量
  • - 時間間隔の配列を反復するため、O(N)。
  • 空間複雑度
  • - O(1)。定数空間を使用しないためです。

上記の問題を解決する場合、ユーザーは主に時刻を 24 時間形式に変換することに集中し、その後は通常の比較を行うだけです。

以上が指定された会議時間を横切る間隔の数をカウントします。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
前の記事:忌まわしい数字次の記事:忌まわしい数字