ホームページ >バックエンド開発 >PHPチュートリアル >単語が文内の単語の接頭辞として出現するかどうかを確認する

単語が文内の単語の接頭辞として出現するかどうかを確認する

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-17 01:35:25224ブラウズ

Check If a Word Occurs As a Prefix of Any Word in a Sentence

1455。単語が文内の単語の接頭辞として出現するかどうかを確認します

難易度: 簡単

トピック: 2 つのポインター、文字列、文字列のマッチング

単一スペース で区切られたいくつかの単語と searchWord で構成される文がある場合、searchWord が文内の任意の単語の接頭辞であるかどうかを確認します。

文内の単語のインデックスを返します (1-indexed)。searchWord はこの単語の接頭辞です。 searchWord が複数の単語の接頭辞である場合、最初の単語のインデックス (最小インデックス) を返します。そのような単語がない場合は -1 を返します。

文字列 s の 接頭辞 は、s の先頭の連続する部分文字列です。

例 1:

  • 入力: 文 = "ハンバーガーを食べるのが大好き"、searchWord = "ハンバーガー"
  • 出力: 4
  • 説明: 「burg」は文の 4 番目の単語である「burger」の接頭語です。

例 2:

  • 入力: 文 = "この問題は簡単な問題です"、searchWord = "プロ"
  • 出力: 2
  • 説明: 「pro」は文の 2 番目と 6 番目の単語である「problem」の接頭辞ですが、最小のインデックスであるため 2 を返します。

例 3:

  • 入力: 文 = "疲れています"、searchWord = "あなた"
  • 出力: -1
  • 説明: 「あなた」は文中のどの単語の接頭語でもありません。

制約:

  • 1
  • 1
  • 文は英小文字とスペースで構成されます。
  • searchWord は小文字の英字で構成されています。

ヒント:

  1. まず文の単語を抽出します。
  2. 各単語について searchWord がインデックス 0 にあるかどうかを確認し、そうであればこの単語のインデックスを返します (1 からインデックス付けされます)
  3. searchWord が単語の接頭辞として存在しない場合は、デフォルト値 (-1) を返します。

解決策:

タスクは次のステップに分割できます:

  1. 文を個々の単語に分割します。
  2. 単語を繰り返し処理し、searchWord が各単語の接頭辞であるかどうかを確認します。
  3. 単語が searchWord で始まる場合は、単語の 1 から始まる位置を返します。
  4. 一致する単語がない場合は、-1 を返します。

このソリューションを PHP で実装してみましょう: 1455。単語が文内の単語の接頭辞として出現するかどうかを確認する

<?php
/**
 * @param String $sentence
 * @param String $searchWord
 * @return Integer
 */
function isPrefixOfWord($sentence, $searchWord) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Example Usage:
echo isPrefixOfWord("i love eating burger", "burg");  // Output: 4
echo isPrefixOfWord("this problem is an easy problem", "pro");  // Output: 2
echo isPrefixOfWord("i am tired", "you");  // Output: -1
?>

説明:

  1. 文を単語に分割する:

    文を単語の配列に分割するには、explode(" ", $sentence) を使用します。

  2. 単語の反復:

    foreach ループを使用して、文内の各単語を反復処理します。 $index 変数は、単語の位置を追跡します (0 からインデックス付けされます)。

  3. プレフィックスをチェックしています:

    strpos($word, $searchWord) === 0 を使用して、searchWord が現在の単語の先頭に出現するかどうかを確認します。

  4. 結果を返す:

    一致するものが見つかった場合は、$index に 1 を加算して、1 から始まる単語のインデックスを返します。ループ後に一致するものが見つからない場合は、-1 を返します。

出力例:

  • 入力文 = "ハンバーガーを食べるのが大好き" および searchWord = "バーグ" の場合、"ハンバーガー" は 4 番目の単語であるため、出力は 4 になります。
  • 入力文 = "この問題は簡単な問題です"、searchWord = "プロ" の場合、"問題" が 2 番目の単語であるため、出力は 2 になります。
  • 入力文 = "i am pretty" および searchWord = "you" の場合、"you" で始まる単語がないため、出力は -1 になります。

時間計算量:

  • 文を単語に分割するには O(n) が必要です。n は文の長さです。
  • 各単語のプレフィックスのチェックには O(m) かかります。m は searchWord の長さです。
  • したがって、全体的な時間計算量は O(n * m) となり、入力サイズの制約に対して効率的です。

このソリューションは制約を満たしており、指定された入力サイズに対して効率的です。

連絡先リンク

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

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

  • LinkedIn
  • GitHub

以上が単語が文内の単語の接頭辞として出現するかどうかを確認するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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