<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
= "在"範例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中文網其他相關文章!