どのプログラミング言語でも、バイナリ文字列は文字 0 と 1 の集合です。各段階で、バイナリ文字列は、文字列にこれら 2 つの文字のみを含めることができるというアプローチに従います。
連続文字列内の文字は、インデックスの差が 1 である文字を指します。 2 つのインデックス i と j を考えてみましょう。 |j-i| = 1 の場合、それらは連続であると言われます。
C では、2 つの文字列が同等である場合、次のことを意味します:
2 つの文字列内の対応する文字は同じです。
文字列の長さは等しく、対応するインデックスの文字は重複します。
問題のステートメントを説明するためのいくつかの例は次のとおりです -
例例
str1 - "10001"
str2 - "101"
###解決-###str1 を str2 に変換することはできません。これは、str1 を変換して同等の文字列 str2 を作成するプロセスで、str1 が「1011」、str2 が「101」として取得されるためです。
例 2 - 次の入力を考えてみましょう -
str1 - "001"
str2 - "11"
###解決-###str1 は、最初の 2 つのゼロを 1 に変更することで str2 に変換できます。
C で文字マッチングと文字列トラバーサルを使用すると、次の問題を解決できます。
###アルゴリズム###ステップ 1
ステップ 2 - 両方のインデックスの文字が一致する場合、i および j ポインターをインクリメントします。
ステップ 3 -文字が等しくない場合は、i 番目と (i 1) 番目のインデックスの文字が「0」であり、j 番目のインデックスの文字が「0」であるかどうかを確認します。 -th インデックス '1' かどうか。
ステップ 4 - そのような状況が存在する場合は、変換を実行できます。両方の 0 が 1 に変換されるため、i ポインタは 2 位置ずつインクリメントされ、j は 1 インデックス位置ずつインクリメントされます。
ステップ 5 - 文字が等しくなく、上記の状況が存在しない場合、変換は実行できません。
ステップ 6 -ポインター i と j の両方が終了位置に正常に到達した場合、s1 を s2 に変換できます。
次のコード スニペットは 2 つのバイナリ文字列を入力として受け取り、指定された条件に基づいた単純な文字置換によって 2 つの文字列が等価であるかどうかを確認します。 リーリー ###出力### リーリー ###結論は### このメソッドは入力文字列を文字ごとに効果的に比較できるため、時間計算量は O(min(文字列長)) です。文字列トラバーサルは、文字列の問題を解決するための重要な側面です。
以上が連続する 2 つの 0 を 1 つの 1 に繰り返し置き換えることにより、指定されたバイナリ文字列を等しくします。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。