3043。最長の共通プレフィックスの長さを求める
難易度: 中
トピック: 配列、ハッシュ テーブル、文字列、トライ
正の整数 arr1 と arr2 を持つ 2 つの配列が与えられます。
正の整数の 接頭辞 は、左端 の桁から始まる 1 つ以上の桁で形成される整数です。たとえば、123 は整数 12345 の接頭辞ですが、234 は ではありません.
2 つの整数 a と b の共通接頭辞 は整数 c であり、c は a と b の両方の接頭辞になります。たとえば、5655359 と 56554 には共通のプレフィックス 565 がありますが、1223 と 43456 には共通のプレフィックスがありません。 x が arr1 に属し、y が arr2 に属するような、整数のすべてのペア (x, y) の間で
最長の共通プレフィックスの長さを見つける必要があります。 すべてのペアの
最長の共通プレフィックスの長さを返します。それらの間に共通のプレフィックスが存在しない場合は、0. を返します。
例 1:
1 4
arr1 の各要素の可能なプレフィックスをすべて HashSet に入れます。
HashSet を利用して 1 つの配列からプレフィックスを保存し、2 番目の配列でそれらのプレフィックスをチェックできます。
アプローチ:
: arr1 と arr2 の各数値に対して、可能なすべてのプレフィックスを生成します。プレフィックスは、左端の数字から始まる 1 つ以上の数字で形成されます。
: HashSet を使用して数値のすべてのプレフィックスを arr1 に保存すると、arr2 からのプレフィックスをチェックするときに高速な検索が保証されます。
: arr2 の各番号について、そのプレフィックスを生成し、これらのプレフィックスのいずれかが手順 2 の HashSet に存在するかどうかを確認します。見つかった最長のプレフィックスを追跡します。
: 共通プレフィックスが見つかった場合は、その長さを返します。それ以外の場合は 0 を返します。
<?php /** * @param Integer[] $arr1 * @param Integer[] $arr2 * @return Integer */ function longestCommonPrefix($arr1, $arr2) { ... ... ... /** * go to ./solution.php */ } // Example usage: $arr1 = [1, 10, 100]; $arr2 = [1000]; echo longestCommonPrefix($arr1, $arr2); // Output: 3 $arr1 = [1, 2, 3]; $arr2 = [4, 4, 4]; echo longestCommonPrefix($arr1, $arr2); // Output: 0 ?>
:
最初に連想配列 $prefixSet を作成し、arr1 内の数値の可能なすべての接頭辞を保持します。:
次に、arr2 内の各数値をループし、同様に文字列に変換します。:
最後に、見つかった最も長い共通プレフィックスの長さを返します。Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya! Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
以上が最長の共通プレフィックスの長さを求めるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。