Maison >développement back-end >tutoriel php >Compter les mots avec un préfixe donné

Compter les mots avec un préfixe donné

Susan Sarandon
Susan Sarandonoriginal
2025-01-09 18:03:42685parcourir
<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. Compter les mots avec un préfixe donné

Difficulté :Facile

Sujets : Tableau, chaîne, correspondance de chaînes

Étant donné un tableau de chaînes words et une chaîne pref, renvoie le nombre de chaînes dans words qui contiennent pref comme préfixe.

Un préfixe d'une chaîne s est n'importe quelle sous-chaîne contiguë de s.

Exemple 1 :

  • Entrée : words = ["payer", "attention", "pratiquer", "assister"], pref = "à"
  • Sortie :2
  • Explication : Les 2 chaînes qui contiennent "at" comme préfixe sont : "attention" et "attend".

Exemple 2 :

  • Entrée : words = ["leetcode","win","loops","success"], pref = "code"
  • Sortie :0
  • Explication : Aucune chaîne ne contient « code » comme préfixe.

Contraintes :

  • 1 <= mots.longueur <= 100
  • 1 <= mots[i].length <= 20
  • 1 <= longueur préf. <= 20
  • les mots [i] et pref sont constitués de lettres anglaises minuscules.

Solution améliorée (en utilisant strpos) :

La solution fournie utilise substr qui est moins efficace que strpos pour cette tâche spécifique. strpos vérifie directement le préfixe au début de la chaîne, évitant ainsi la création inutile de sous-chaînes.

Cette solution PHP améliorée utilise strpos :

<?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;
}
?>
<p><strong>Complexité temporelle :</strong> O(n*m) dans le pire des cas, où n est le nombre de mots et m est la longueur du préfixe.  Cependant, en moyenne, ce sera plus rapide que la <code>substr solution originale.

Complexité de l'espace : O(1) - Un espace supplémentaire constant est utilisé.

Cette réponse révisée fournit une solution plus efficace et maintient la clarté de l'explication. L'image reste inchangée car elle est pertinente par rapport à l'énoncé du problème.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn