ホームページ  >  記事  >  バックエンド開発  >  配列を指定して、同じ文字を持たない 2 つの文字列の長さの最大合計を見つけます。

配列を指定して、同じ文字を持たない 2 つの文字列の長さの最大合計を見つけます。

王林
王林転載
2023-08-29 18:45:05533ブラウズ

配列を指定して、同じ文字を持たない 2 つの文字列の長さの最大合計を見つけます。

この記事の目的は、指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するプログラムを実装することです。定義上、文字列は文字の集合です。

###問題文###

指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するプログラムを実装します。

例 1

リーリー リーリー

イラスト

文字列「abcd」と「wxyz」には共通の文字はありません。結果として、2 つの文字列を合わせた長さは 4 × 4 となり、これは 8 に等しく、すべての実行可能なペアの中で最長の長さになります。

例 2

リーリー リーリー

イラスト

文字列「abcd」と「hij」には共通の文字はありません。結果として、2 つの文字列を合わせた長さは 4 3 となり、これは 8 に等しく、すべての実行可能なペアの中で最長の長さになります。

例 3

リーリー リーリー

イラスト

文字列「abcdx」と「lmno」には共通の文字はありません。結果として、2 つの文字列を合わせた長さは 5 4 となり、これは 9 に等しく、すべての実行可能なペアの中で最長の長さになります。

例 4

リーリー リーリー

イラスト

文字列「coat」と「hij」には共通の文字はありません。結果として、2 つの文字列を合わせた長さは 4 3 となり、これは 8 に等しく、すべての実行可能なペアの中で最長の長さになります。

###解決###

指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するには、次のアプローチを使用します。

この問題を解決するか、次のように、指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化する方法を見つけてください。とはいえ、上記の問題に対処する最も簡単な方法は、文字列配列の考えられる各ペアを作成し、共通の文字を持たないすべての考えられるペアの文字列長の最大合計を表示することです。

ビット操作の概念を使用すると、上記の戦略を改善することもできます。ここでの目標は、共通の文字を共有せず、長さの合計が可能な限り長い文字列のペアを識別する前に、各文字列を同等のビットマスク整数に変換することです。

ビットマスキングが現在のトピックです。ビットマスクとは何ですか?

まず整数とは何かを覚えておく必要があります。整数は、単につなぎ合わされたビットのコレクションです。ビット マスキングの概念は、バイナリ形式を使用して数値をグラフィックで表現することです。

簡単に言えば、「ビットマスク」は何でも指定できる 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 プログラム実装です。
リーリー ###出力### リーリー ###結論は###

同様に、指定された配列内に共通の文字を持たない文字列のペアの長さの合計を最大化することができます。

この記事では、指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するプログラムを取得するという課題に取り組みます。

C プログラミング コードは、指定された配列内で共通の文字を持たない文字列のペアの長さの合計を最大化するアルゴリズムとともにここで提供されます。

以上が配列を指定して、同じ文字を持たない 2 つの文字列の長さの最大合計を見つけます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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