ホームページ >バックエンド開発 >C++ >以下を中国語に翻訳します。ループされたバイナリ文字列から 0 の出現をすべて削除するには、0 部分文字列の削除を最小限に抑えます。

以下を中国語に翻訳します。ループされたバイナリ文字列から 0 の出現をすべて削除するには、0 部分文字列の削除を最小限に抑えます。

WBOY
WBOY転載
2023-08-25 15:41:18598ブラウズ

以下を中国語に翻訳します。ループされたバイナリ文字列から 0 の出現をすべて削除するには、0 部分文字列の削除を最小限に抑えます。

この問題では、指定されたバイナリ文字列からすべてのゼロを削除する必要があります。同時に、連続するゼロのペアを一度に削除し、削除されたゼロのペアの合計数をカウントする必要があります。

指定された文字列内の連続するゼロのペアの数を数えることで、問題を解決できます。このチュートリアルでは、問題を解決するための 2 つの異なる解決策を学習します。

問題ステートメント -長さ N の循環バイナリ文字列 str が与えられます。文字列からすべてのゼロを削除するために必要な、連続するゼロの最小数を見つける必要があります。

例例

リーリー リーリー ###説明###

str[0] と str[1] を一緒に削除できます。その後、str[4] と str[5] を削除できます。したがって、2 組の連続するゼロを削除する必要があります。

リーリー リーリー ###説明###

すべてのゼロを一度に削除できます。

リーリー リーリー ###説明###

バイナリ文字列は循環しているため、str[0]、str[1]、および str[7] を一緒に削除できます。次に、str[5] と str[6] を一緒に削除できます。

アプローチ 1

このメソッドでは、指定された文字列内の連続するゼロのペアの合計数を見つけ、指定された質問に答えます。

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

ステップ 1

- 「cnt」変数をゼロに初期化します。

  • ステップ 2

    - 指定された文字列内の数値 1 を追跡するために、「isOne」変数を false 値に初期化します。

  • ステップ 3

    - ループを使用して文字列を反復処理します。ループ内で、現在の文字が「0」の場合、「cnt」の値を 1 ずつ増やします。

  • ステップ 4

    -while ループを使用して、「0」である次の文字を見つけて「I」の値を 1 ずつ増やすまで繰り返します。

  • ステップ 5

    - 現在の文字が「1」の場合は、「isOne」変数の値を true に変更します。これは、文字列に少なくとも 1 つの「1」が含まれていることを示します。

  • ステップ 6

    -ループの反復が完了すると、「isOne」の値が false の場合、文字列にゼロのみが含まれていることを意味し、そのような場合は 1 を返します。

  • ステップ 7
  • -最初と最後の文字が「0」の場合、文字列は循環しているため、「cnt」の値を 1 ずつ減らします。

    ステップ 8

    -「cnt」の値を返します。
  • Example の中国語訳は次のとおりです:

    Example
  • リーリー ###出力### リーリー
  • 空間の複雑さ - O(1)

    方法 2

    この方法では、隣接する要素の差を数えることによって、すべてのゼロを削除するために必要なゼロ削除部分文字列の最小数を計算します。
  • ###アルゴリズム###

ステップ 1

-「cnt」変数と「isOne」変数を定義し、それぞれ 0 と false で初期化します。

ステップ 2

-for ループを使用して N-1 回の反復を行います。N は文字列の長さです。

    ステップ 3
  • -ループ内で、現在の文字が「0」で次の文字が「1」であるかどうかを確認し、「cnt」の値を 1 ずつ増やします。 「isOne」変数の値を true に変更します。

  • ステップ 4
  • - 最後の文字が「0」で最初の文字が「1」の場合は、「cnt」の値を 1 増やします。

  • ステップ 5
  • - 「isOne」の値が false の場合は、1 を返します。

  • ステップ 6
  • - 「cnt」変数の値を返します。

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

    リーリー ###出力### リーリー ###結論は### 与えられた問題に対する 2 つの異なる解決策を見てきました。最初の方法では、連続するゼロのペアの合計数を数えます。2 番目の方法では、一致しない隣接する文字の合計数を数えます。

以上が以下を中国語に翻訳します。ループされたバイナリ文字列から 0 の出現をすべて削除するには、0 部分文字列の削除を最小限に抑えます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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