<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中文网其他相关文章!