ホームページ バックエンド開発 PHPチュートリアル 配列内の文字列のマッチング

配列内の文字列のマッチング

Jan 08, 2025 am 06:24 AM

String Matching in an Array

1408。配列内の文字列のマッチング

難易度: 簡単

トピック: 配列、文字列、文字列マッチング

文字列単語の配列を指定すると、別の単語部分文字列である単語内のすべての文字列を返します。回答は任意の順序で返すことができます。

部分文字列は、文字列

内の連続した文字のシーケンスです。

例 1:

  • 入力: 単語 = ["マス","as","ヒーロー","スーパーヒーロー"]
  • 出力: ["as","hero"]
  • 説明: 「as」は「mass」の部分文字列で、「hero」は「superhero」の部分文字列です。 ["hero","as"] も有効な答えです。

例 2:

  • 入力: 単語 = ["leetcode","et","code"]
  • 出力: ["et","code"]
  • 説明: 「et」、「code」は「leetcode」の部分文字列です。

例 3:

  • 入力: 単語 = ["blue","green","bu"]
  • 出力: []
  • 説明: 単語の文字列は、別の文字列の部分文字列ではありません。

制約:

  • 1
  • 1
  • Words[i] には小文字の英字のみが含まれます。
  • 単語の文字列はすべて 一意です。

ヒント:

  1. ある文字列が別の文字列の部分文字列であるかどうかをブルートフォースで検索するか、KMP アルゴリズムを使用します。

解決策:

単語配列内で、配列内の別の単語の部分文字列であるすべての文字列を検索する必要があります。総当たりアプローチを使用できます。このアプローチには、リスト内の各文字列をチェックし、それが他の文字列の部分文字列であるかどうかを確認することが含まれます。

このソリューションを PHP で実装してみましょう: 1408。配列内の文字列一致

<?php
/**
 * @param String[] $words
 * @return String[]
 */
function stringMatching($words) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Example 1
$words = ["mass", "as", "hero", "superhero"];
print_r(stringMatching($words));

// Example 2
$words = ["leetcode", "et", "code"];
print_r(stringMatching($words));

// Example 3
$words = ["blue", "green", "bu"];
print_r(stringMatching($words));
?>
ログイン後にコピー

説明:

  1. 関数 stringMatching は、入力配列内のすべての単語をループします。
  2. 各単語について、入れ子になったループを使用して、配列内の他のすべての単語と比較します。
  3. PHP の strpos() 関数を使用して、ある文字列が別の文字列の部分文字列であるかどうかを確認します。部分文字列が見つからない場合、strpos() 関数は false を返します。
  4. 部分文字列が見つかった場合は、単語を 1 回記録するだけで済むため、その単語を結果の配列に追加し、内部ループから抜け出します。
  5. 最後に、関数はすべての部分文字列を含む結果配列を返します。

時間計算量:

  • 時間計算量は O(n2 x m) です。ここで、n は次の数です。単語と m は最大長です一言。これは、1 つおきの単語内の各単語に対して部分文字列検索を実行しているためです。

出力例:

入力 ["mass"、"as"、"hero"、"superhero"] の場合、出力は次のようになります:

Array
(
    [0] => as
    [1] => hero
)
ログイン後にコピー

入力 ["leetcode", "et", "code"] の場合、出力は次のようになります:

Array
(
    [0] => et
    [1] => code
)
ログイン後にコピー

入力 ["blue"、"green"、"bu"] の場合、出力は次のようになります:

Array
(
)
ログイン後にコピー

この解決策は、特定の問題の制約に対してうまく機能します。

連絡先リンク

このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!

このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:

  • LinkedIn
  • GitHub

以上が配列内の文字列のマッチングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP状況調査の発表

See all articles