配列を指定して、同じ文字を持たない 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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









foreach ループを使用して PHP 配列から重複要素を削除する方法は次のとおりです。配列を走査し、要素がすでに存在し、現在の位置が最初に出現しない場合は、要素を削除します。たとえば、データベース クエリの結果に重複レコードがある場合、このメソッドを使用してそれらを削除し、重複レコードのない結果を取得できます。

PHP で配列をディープ コピーする方法には、json_decode と json_encode を使用した JSON エンコードとデコードが含まれます。 array_map と clone を使用して、キーと値のディープ コピーを作成します。シリアル化と逆シリアル化には、serialize と unserialize を使用します。

1. まず pycharm を開いて、pycharm ホームページに入ります。 2. 次に、新しい Python スクリプトを作成し、右クリックして [新規] をクリックし、[Pythonfile] をクリックします。 3. 文字列、コード: s="-" を入力します。 4. 次に、文字列内のシンボルを 20 回繰り返す必要があります (コード: s1=s*20)。 5. 印刷出力コード、コード: print(s1) を入力します。 6. 最後にスクリプトを実行すると、下部に戻り値が表示されます。 - 20 回繰り返しました。

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

PHP で配列のディープ コピーを実行するためのベスト プラクティスは、 json_decode(json_encode($arr)) を使用して配列を JSON 文字列に変換し、それから配列に戻すことです。 unserialize(serialize($arr)) を使用して配列を文字列にシリアル化し、それを新しい配列に逆シリアル化します。 RecursiveIteratorIterator を使用して、多次元配列を再帰的に走査します。

多次元配列のソートは、単一列のソートとネストされたソートに分類できます。単一列のソートでは、array_multisort() 関数を使用して列ごとにソートできますが、ネストされたソートでは、配列を走査してソートするための再帰関数が必要です。具体的な例としては、製品名による並べ替えや、売上数量や価格による化合物の並べ替えなどがあります。

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

PHP 配列のマージおよび重複排除アルゴリズムは、元の配列を小さなブロックに分割して並列処理する並列ソリューションを提供し、メイン プロセスは重複排除するブロックの結果をマージします。アルゴリズムのステップ: 元の配列を均等に割り当てられた小さなブロックに分割します。重複排除のために各ブロックを並行して処理します。ブロックの結果をマージし、再度重複排除します。
