この記事の目的は、指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するプログラムを実装することです。定義上、文字列は文字の集合です。
###問題文###例 1
リーリー リーリー例 2
リーリー リーリー例 3
リーリー リーリー例 4
リーリー リーリー指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するには、次のアプローチを使用します。
ビット操作の概念を使用すると、上記の戦略を改善することもできます。ここでの目標は、共通の文字を共有せず、長さの合計が可能な限り長い文字列のペアを識別する前に、各文字列を同等のビットマスク整数に変換することです。
ビットマスキングが現在のトピックです。ビットマスクとは何ですか?
まず整数とは何かを覚えておく必要があります。整数は、単につなぎ合わされたビットのコレクションです。ビット マスキングの概念は、バイナリ形式を使用して数値をグラフィックで表現することです。
簡単に言えば、「ビットマスク」は何でも指定できる 2 進数です。
###アルゴリズム###以下は、指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するプログラムを実装するためのアルゴリズムです。
ステップ 1
- 始めましょう
ステップ 2 - memset() 関数を作成して、ビットマスク配列をゼロで初期化します。文字列 arr[] 配列内の文字列のビット単位の OR を記録するために使用される初期サイズ L のビットマスク。
ステップ 3 - 応答を保存するには、maxLength 変数の値を 0 に設定します。
ステップ 4 - 変数 i を使用して範囲 [0, L] を反復しながら次の操作を実行します -
ステップ 5 - ビットマスク[i] の値をマスク[i]|1(arr[i][j] - 'a') として定義し、範囲 [0] で反復します。 , S]。ここで、S は文字列のサイズです。
ステップ 6 - 整数変数 j を使用して範囲 [0, i] を反復処理し、ビットマスクの場合は maxLength の値を arr[i].length() の最大値に設定します。 [i] bitmask[j] とのビット単位の AND の結果が 0 でない場合、arr[j].length()。
ステップ 7 - 最後に、得られた結果を印刷します。
ステップ 8 - 停止
例: C プログラム これは、指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するために上で書かれたアルゴリズムの C プログラム実装です。
この記事では、指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するプログラムを取得するという課題に取り組みます。
C プログラミング コードは、指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するアルゴリズムとともにここで提供されます。
以上が配列を指定して、同じ文字を持たない 2 つの文字列の長さの最大合計を見つけます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。