首页 > 后端开发 > php教程 > 计算具有给定前缀的单词数

计算具有给定前缀的单词数

Susan Sarandon
发布: 2025-01-09 18:03:42
原创
615 人浏览过
<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>
登录后复制

Counting Words With a Given Prefix

  1. 计算具有给定前缀的单词

难度:简单

主题:数组、字符串、字符串匹配

给定一个字符串数组 words 和一个字符串 pref,返回 words 中包含 pref 作为前缀的字符串数量。

字符串 s 的前缀是 s 的任何前导连续子字符串。

示例1:

  • 输入: words = ["付钱","注意","练习","参加"], pref = "在"
  • 输出: 2
  • 说明:包含“at”作为前缀的2个字符串是:“attention”和“attend”。

示例2:

  • 输入: words = ["leetcode","win","loops","success"], pref = "code"
  • 输出: 0
  • 说明:不存在包含“code”作为前缀的字符串。

约束:

  • 1
  • 1
  • 1
  • words[i] 和 pref 由小写英文字母组成。

改进的解决方案(使用 strpos):

提供的解决方案使用 substr,对于此特定任务,其效率低于 strposstrpos 直接检查字符串开头的前缀,避免创建不必要的子字符串。

这个改进的 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板