recherche
Maisondéveloppement back-endtutoriel phpCompter les paires de préfixes et de suffixes I

Count Prefix and Suffix Pairs I

3042. Compter les paires de préfixes et de suffixes I

Difficulté :Facile

Sujets :Array, String, Trie, Rolling Hash, String Matching, Hash Function

Vous recevez un tableau de chaînes de mots indexé à 0.

Définissons une fonction booléenne isPrefixAndSuffix qui prend deux chaînes, str1 et str2 :

  • isPrefixAndSuffix(str1, str2) renvoie true si str1 est à la fois un préfixe1 et un suffixe2 de str2, et false sinon.

Par exemple, isPrefixAndSuffix("aba", "ababa") est vrai car "aba" est un préfixe de "ababa" et aussi un suffixe, mais isPrefixAndSuffix("abc", "abcd") est faux.

Renvoie un entier désignant le nombre de paires d'index (i, j) tel que i

Exemple 1 :

  • Saisie : mots = ["a","aba","ababa","aa"]
  • Sortie : 4
  • Explication : Dans cet exemple, les paires d'index comptées sont : i = 0 et j = 1 car isPrefixAndSuffix("a", "aba") est vrai. i = 0 et j = 2 car isPrefixAndSuffix("a", "ababa") est vrai. i = 0 et j = 3 car isPrefixAndSuffix("a", "aa") est vrai. i = 1 et j = 2 car isPrefixAndSuffix("aba", "ababa") est vrai. Par conséquent, la réponse est 4.

Exemple 2 :

  • Saisie : mots = ["pa","papa","ma","mama"]
  • Sortie : 2
  • Explication : Dans cet exemple, les paires d'index comptées sont : i = 0 et j = 1 car isPrefixAndSuffix("pa", "papa") est vrai. i = 2 et j = 3 car isPrefixAndSuffix("ma", "mama") est vrai. Par conséquent, la réponse est 2.

Exemple 3 :

  • Saisie : mots = ["abab","ab"]
  • Sortie : 0
  • Explication : Dans cet exemple, la seule paire d'index valide est i = 0 et j = 1, et isPrefixAndSuffix("abab", "ab") est faux. Par conséquent, la réponse est 0.

Contraintes :

  • 1
  • 1
  • les mots [i] se composent uniquement de lettres anglaises minuscules.

Indice :

  1. Parcourir toutes les paires d'index (i, j), de telle sorte que i
  2. La réponse est le nombre total de paires où isPrefixAndSuffix(words[i],words[j]) == true.

Solution :

Nous devons parcourir toutes les paires d'index (i, j) où i

Implémentons cette solution en PHP : 3042. Compter les paires de préfixes et de suffixes I

<?php /**
 * @param String[] $words
 * @return Integer
 */
function countPrefixAndSuffixPairs($words) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

/**
 * Function to check if str1 is both a prefix and a suffix of str2
 *
 * @param $str1
 * @param $str2
 * @return bool
 */
function isPrefixAndSuffix($str1, $str2) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Example Test Cases
$words1 = ["a", "aba", "ababa", "aa"];
$words2 = ["pa", "papa", "ma", "mama"];
$words3 = ["abab", "ab"];

echo countPrefixAndSuffixPairs($words1) . "\n";  // Output: 4
echo countPrefixAndSuffixPairs($words2) . "\n";  // Output: 2
echo countPrefixAndSuffixPairs($words3) . "\n";  // Output: 0
?>

Explication:

  1. countPrefixAndSuffixPairs ($words):

    • Cette fonction parcourt toutes les paires d'index possibles (i, j) telles que i
    • Il appelle isPrefixAndSuffix() pour vérifier si les mots[i] sont à la fois un préfixe et un suffixe de mots[j].
    • Si la condition est vraie, cela incrémente le décompte.
  2. isPrefixAndSuffix($str1, $str2):

    • Cette fonction d'assistance vérifie si str1 est à la fois un préfixe et un suffixe de str2.
    • Il utilise substr() pour extraire le préfixe et le suffixe de str2 et les compare avec str1.
    • Si les deux conditions sont vraies, cela renvoie vrai, sinon, cela renvoie faux.

Complexité temporelle :

  • La complexité temporelle est O(n2 x m), où n est la longueur du tableau de mots et m est la longueur moyenne du chaînes dans le tableau. Cela est dû aux boucles imbriquées et aux opérations substr().

Exemple de sortie :

Pour les tableaux d'entrée donnés :

  • ["a", "aba", "ababa", "aa"] -> Sortie : 4
  • ["pa", "papa", "ma", "maman"] -> Sortie : 2
  • ["abab", "ab"] -> Sortie : 0

Cette solution devrait fonctionner efficacement dans les limites données.

Liens de contact

Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !

Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :

  • LinkedIn
  • GitHub

  1. Préfixe Un préfixe d'une chaîne est une sous-chaîne qui commence au début de la chaîne et s'étend jusqu'à n'importe quel point de celle-ci. ↩

  2. Suffixe Un suffixe d'une chaîne est une sous-chaîne qui commence à n'importe quel point de la chaîne et s'étend jusqu'à sa fin. ↩

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
Comment PHP identifie-t-il la session d'un utilisateur?Comment PHP identifie-t-il la session d'un utilisateur?May 01, 2025 am 12:23 AM

Phpidentifiesauser'sessionusingssse cookiesand sessionids.1) whenSession_start () est calculé, phpgeneratesauquesseSessionIdStoredInacookIenameDPhpSesssIdonUser'sbrowser.2) thisIdallowsphptoreTrrieSeSessionDatafromTeserver.

Quelles sont les meilleures pratiques pour sécuriser les séances PHP?Quelles sont les meilleures pratiques pour sécuriser les séances PHP?May 01, 2025 am 12:22 AM

La sécurité des sessions PHP peut être obtenue grâce aux mesures suivantes: 1. Utilisez Session_RegeReate_ID () pour régénérer l'ID de session lorsque l'utilisateur se connecte ou est une opération importante. 2. Cryptez l'ID de session de transmission via le protocole HTTPS. 3. Utilisez session_save_path () pour spécifier le répertoire sécurisé pour stocker les données de session et définir correctement les autorisations.

Où les fichiers de session PHP sont-ils stockés par défaut?Où les fichiers de session PHP sont-ils stockés par défaut?May 01, 2025 am 12:15 AM

PhpSessionFilesArestorentheDirectorySpecifiedSession.save_path, généralement / tmponunix-likesystemsorc: \ windows \ temponwindows.tocustomzethis: 1) usession_save_path () tosetacustomDirectory, astumeit'swrit

Comment récupérer les données d'une session PHP?Comment récupérer les données d'une session PHP?May 01, 2025 am 12:11 AM

ToretrrievedatafromaphpSession, startTheSessionwithSession_start () et accessvariablesInthe $ _sessionArray.forexample: 1) startTheSession: session_start (). 2) récupéré: $ username = $ _ session ['userSeger']; echo "bienvenue,". $ Username;..

Comment pouvez-vous utiliser des sessions pour mettre en œuvre un panier?Comment pouvez-vous utiliser des sessions pour mettre en œuvre un panier?May 01, 2025 am 12:10 AM

Les étapes pour construire un système de panier d'achat efficace à l'aide de sessions comprennent: 1) Comprendre la définition et la fonction de la session. La session est un mécanisme de stockage côté serveur utilisé pour maintenir l'état de l'utilisateur entre les demandes; 2) Implémenter la gestion de session de base, comme l'ajout de produits au panier; 3) développer une utilisation avancée, soutenant la gestion de la quantité de produits et la suppression; 4) Optimiser les performances et la sécurité, en persistant les données de session et en utilisant des identifiants de session sécurisés.

Comment créez-vous et utilisez-vous une interface dans PHP?Comment créez-vous et utilisez-vous une interface dans PHP?Apr 30, 2025 pm 03:40 PM

L'article explique comment créer, mettre en œuvre et utiliser des interfaces dans PHP, en se concentrant sur leurs avantages pour l'organisation du code et la maintenabilité.

Quelle est la différence entre crypte () et mot de passe_hash ()?Quelle est la différence entre crypte () et mot de passe_hash ()?Apr 30, 2025 pm 03:39 PM

L'article traite des différences entre crypt () et mot de passe_hash () dans PHP pour le hachage de mot de passe, en se concentrant sur leur implémentation, leur sécurité et leur aptitude aux applications Web modernes.

Comment pouvez-vous prévenir les scripts inter-sites (XSS) en PHP?Comment pouvez-vous prévenir les scripts inter-sites (XSS) en PHP?Apr 30, 2025 pm 03:38 PM

L'article discute de la prévention des scripts inter-sites (XSS) dans PHP par validation d'entrée, en codage de sortie et en utilisant des outils comme OWASP ESAPI et Purificateur HTML.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP