首頁 >後端開發 >php教程 >計算具有給定前綴的單字數

計算具有給定前綴的單字數

Susan Sarandon
Susan Sarandon原創
2025-01-09 18:03:42614瀏覽
<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn