指定された配列内の文字列ペアの最初の文字を交換することによって取得された新しい文字列ペアの数をカウントします。
この問題では、文字列のペアを選択し、それらの最初の文字を交換する必要があります。その後、新しいペアの総数を計算する必要があります。この問題は、各ペアの最初の文字を交換し、それが配列内に存在するかどうかを確認することで解決できます。
この問題を解決する効率的な方法は、ハッシュ マップ データ構造を使用することです。
問題ステートメント - N 個の文字列を含む配列があります。すべての配列要素から任意の 2 つの文字列を選択し、これら 2 つの文字列の最初の文字を交換できます。配列内に存在しない、生成された新しい文字列ペアの合計数をカウントする必要があります。
例例
入力 – array[] = {「すべき」、「だろう」、「できる」};
出力 – 3
説明 – 新しく生成されたペアは、 Could と wan になります。別のペアは、誰が、そしてそうすべきである可能性があります。 3 番目のペアは san と chould です。
入力 – array[] = {"デモ", "テスト"};
出力 – 1
説明 – 配列内に存在しない、新しく生成されたペアは temo と dest です。
方法1
このメソッドでは、2 つのネストされたループを使用して、配列要素のすべてのペアを取得します。その後、2 つのペアの最初の文字を交換します。次に、3 番目のネストされたループを使用して、配列にペアが含まれているかどうかを確認します。
###アルゴリズム###- 「cnt」変数を定義し、0 に初期化して、ペアの総数を保存します。
-
- O(N^3)。3 つのネストされたループを使用しているためです。
空間の複雑さ– O(1) 方法 2
このメソッドでは、マップ データ構造を使用して、マップ内のすべての配列値を保存します。その後、マップに新しく生成された文字列が含まれているかどうかを確認できます。そうでない場合は、カウントを 1 つ増やします。 ###アルゴリズム###
変数「cnt」を定義します
文字列配列をループし、すべての配列値をマップに保存します。
2 つのネストされたループを使用して、配列要素のすべてのペアを取得します。
文字列のペアを取得し、「first」変数と「first」変数に格納します。
2 つの文字列の最初の文字が等しくない場合は、それらを交換します。
マップに、新しく生成された文字列が含まれているかどうかを確認します。そうでない場合は、「cnt」の値を 1 増やします。
「cnt」値を返します。
- ###例### リーリー ###出力### リーリー 時間計算量 - O(N^2)、入れ子になったループを 2 つ使用するため。
- 空間複雑度 – マッピングを使用してすべての配列要素を格納するため、O(N)。
配列要素の最初の文字を交換することで、新しく生成されたペアの総数を学習します。時間計算量の点で 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)

ホットトピック









General Matrix Multiplication (GEMM) は、多くのアプリケーションやアルゴリズムの重要な部分であり、コンピューター ハードウェアのパフォーマンスを評価するための重要な指標の 1 つでもあります。 GEMM の実装に関する徹底的な調査と最適化は、ハイ パフォーマンス コンピューティングとソフトウェア システムとハードウェア システムの関係をより深く理解するのに役立ちます。コンピューター サイエンスでは、GEMM を効果的に最適化すると、計算速度が向上し、リソースが節約されます。これは、コンピューター システムの全体的なパフォーマンスを向上させるために非常に重要です。 GEMM の動作原理と最適化方法を深く理解することは、最新のコンピューティング ハードウェアの可能性をより有効に活用し、さまざまな複雑なコンピューティング タスクに対してより効率的なソリューションを提供するのに役立ちます。 GEMMのパフォーマンスを最適化することで

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

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

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

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

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

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

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