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 内の各数値をループし、同様に文字列に変換します。:
最後に、見つかった最も長い共通プレフィックスの長さを返します。이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다! 이렇게 더 유용한 콘텐츠를 원하시면 저를 팔로우해주세요.
위 내용은 가장 긴 공통 접두사의 길이 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!