Tous les défis
Difficile 0 résolus 0 % de réussite

Trouver Plusieurs Motifs dans un Texte

Pour chaque motif demandé, déterminer s'il apparaît comme sous-chaîne contiguë n'importe où dans le texte commun.

Pour chaque motif demandé, déterminer s'il apparaît comme sous-chaîne contiguë n'importe où dans le texte commun. Les motifs peuvent se chevaucher et se répéter. Retournez les résultats dans l'ordre original des requêtes. Les limites imposent une approche capable de traiter efficacement de nombreux motifs.

Implémentez find_many_patterns(text, patterns).

Entrée

text : Le texte dans lequel chaque requête effectue sa recherche.

patterns : Les motifs, dans l'ordre des requêtes.

Sortie

Retournez YES pour chaque motif présent et NO pour chaque motif absent.

Contraintes

1…100 000 caractères pour le texte. 1…100 000 motifs non vides, avec une longueur totale d'au plus 500 000. Tous les caractères sont des lettres minuscules de a à z.

Exemples

Exemple 1
Entrée :
text = "bananas"
patterns = ["ana", "apple", "nas"]

Sortie attendue :
expected = ["YES", "NO", "YES"]
Entrée :
std::string text = "bananas";
std::vector<std::string> patterns = {"ana", "apple", "nas"};

Sortie attendue :
std::vector<std::string> expected = {"YES", "NO", "YES"};
Entrée :
string text = "bananas";
string[] patterns = new string[] {"ana", "apple", "nas"};

Sortie attendue :
string[] expected = new string[] {"YES", "NO", "YES"};

Explication

Ana apparaît à partir de la position 2 et nas à la position 5 (les positions commencent à 1 ici). Apple n'apparaît jamais.

Exemple 2
Entrée :
text = "aaaa"
patterns = ["aa", "aaaaa", "aa"]

Sortie attendue :
expected = ["YES", "NO", "YES"]
Entrée :
std::string text = "aaaa";
std::vector<std::string> patterns = {"aa", "aaaaa", "aa"};

Sortie attendue :
std::vector<std::string> expected = {"YES", "NO", "YES"};
Entrée :
string text = "aaaa";
string[] patterns = new string[] {"aa", "aaaaa", "aa"};

Sortie attendue :
string[] expected = new string[] {"YES", "NO", "YES"};

Explication

Aa apparaît malgré les occurrences qui se chevauchent. Cinq caractères a ne peuvent pas tenir dans un texte de quatre caractères. La requête répétée aa reçoit la même réponse.

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.