<code class="language-php"><?php /** * @param String[] $words * @param String $pref * @return Integer */ function countWordsWithPrefix($words, $pref) { $count = 0; foreach ($words as $word) { if (strpos($word, $pref) === 0) { $count++; } } return $count; } // Example Usage $words1 = ["pay", "attention", "practice", "attend"]; $pref1 = "at"; echo countWordsWithPrefix($words1, $pref1); // Output: 2 $words2 = ["leetcode", "win", "loops", "success"]; $pref2 = "code"; echo countWordsWithPrefix($words2, $pref2); // Output: 0 ?></code>
難易度: 簡単
トピック: 配列、文字列、文字列マッチング
文字列 words
と文字列 pref
の配列を指定すると、プレフィックスとして words
を含む pref
内の文字列の数を返します。
文字列 s
の接頭辞は、s
の先頭の連続する部分文字列です。
例 1:
words
= ["支払い","注意","練習","出席"], pref
= "at"例 2:
words
= ["leetcode","win","loops","success"], pref
= "code"制約:
改善された解決策 (strpos を使用):
提供されたソリューションは substr
を使用しますが、この特定のタスクでは strpos
よりも効率が低くなります。 strpos
は文字列の先頭にあるプレフィックスを直接チェックし、不必要な部分文字列の作成を回避します。
この改良された PHP ソリューションは strpos
を使用します:
<code class="language-php"><?php function countWordsWithPrefix(array $words, string $pref): int { $count = 0; foreach ($words as $word) { if (strpos($word, $pref) === 0) { // Check if pref is at the beginning (index 0) $count++; } } return $count; } ?></code>
時間計算量: 最悪の場合 O(n*m)。n はワード数、m はプレフィックスの長さです。 ただし、平均すると、元の substr
ソリューションよりも高速になります。
スペースの複雑さ: O(1) - 一定の追加スペースが使用されます。
この改訂された回答は、より効率的なソリューションを提供し、説明の明確さを維持します。 画像は問題文に関連しているため、変更されません。
以上が指定された接頭辞を持つ単語を数えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。