Calculer les sous-chaînes correspondantes en JavaScript
La capacité de calculer avec précision les sous-chaînes correspondantes dans une chaîne donnée est une compétence clé dans la programmation JavaScript, car elle permet aux développeurs d'analyser et de manipuler efficacement les données texte. Cet article plonge dans le monde de la manipulation de chaînes et explore les complexités du calcul des sous-chaînes correspondantes en JavaScript, à l'aide d'une série de techniques peu connues. En clarifiant la logique sous-jacente et en employant ces méthodes non conventionnelles, les développeurs peuvent mieux comprendre comment compter efficacement les occurrences de sous-chaînes spécifiques, leur permettant ainsi d'extraire des informations significatives à partir de données textuelles. Rejoignez-nous dans ce voyage inspirant alors que nous libérons le potentiel de la puissance de JavaScript et élargissons notre riche vocabulaire pour maîtriser l'art du calcul des sous-chaînes correspondantes.
Énoncé du problème
Nous avons besoin d'une fonction JavaScript qui calcule une sous-séquence dans une chaîne donnée et prend une entrée de chaîne nommée "str" et un tableau d'entrées de chaîne nommée "arr". Le but est d'examiner chaque élément de "arr" et de déterminer le nombre de chaînes qui sont des sous-séquences de "str". Une sous-séquence est une chaîne formée en supprimant des caractères de la chaîne d'origine tout en conservant l'ordre relatif des caractères restants. La fonction doit comparer soigneusement chaque élément de « arr » et « str » et déterminer s'il peut être construit en supprimant des caractères de « str ». Il renverra ensuite un entier représentant le nombre de sous-séquences qualifiées trouvées dans « str ».
Exemple de saisie -
str = 'abracadabra'; arr = ['a', 'bra', 'cad', 'dab'];
Exemple de sortie -
Output =4;
Description de la sortie -
Dans l'entrée donnée, la chaîne "str" est "abracadabra" et le tableau "arr" contient ['a', 'bra', 'cad', 'dab'].
En analysant chaque élément de "arr", nous constatons que "a", "bra", "cad" et "dab" sont tous des sous-séquences de "str". Par conséquent, le décompte de la sous-séquence est 4, ce qui correspond au résultat attendu.
Méthode
Dans cet article, nous verrons différentes manières de résoudre les problèmes ci-dessus en JavaScript -
Méthode de craquage par force brute
Méthode du double pointeur
Méthode 1 : Fissuration par force brute
Une approche par force brute pour calculer des sous-séquences valides consiste à générer toutes les sous-séquences possibles d'une chaîne et à vérifier leur présence dans un tableau. Nous parcourons chaque chaîne, en générant des sous-séquences de manière récursive ou en utilisant des opérations au niveau du bit, et nous les comparons aux éléments du tableau. Le compteur est incrémenté à chaque partie, donnant un décompte total. Cette méthode est coûteuse en calcul pour les entrées plus importantes, de sorte que des algorithmes alternatifs tels que la programmation dynamique fournissent des solutions plus optimales.
Exemple
Ce code implémente un algorithme récursif pour compter le nombre de sous-séquences d'une chaîne donnée (str) dans un tableau de chaînes (arr). La fonction countSubsequences initialise une variable de comptage pour garder une trace des sous-séquences valides. La fonction generateSubsequences génère toutes les sous-séquences possibles en itérant sur la chaîne d'entrée et en vérifiant si chaque sous-séquence est présente dans le tableau. L'appel récursif est effectué pour explorer différentes possibilités d'inclusion ou d'exclusion de caractères. L'appel de la fonction principale génère une sous-séquence commençant au début de la chaîne. La variable count est renvoyée comme résultat final. Un exemple d'utilisation illustre l'utilisation de cette fonction avec des exemples de chaînes et des tableaux de chaînes. Les résultats sont stockés et imprimés sur la console.
function countSubsequences(str, arr) { let count = 0; // Generate all possible subsequences of the input string function generateSubsequences(sub, index) { if (index === str.length) { // Check if the subsequence exists in the array if (arr.includes(sub)) { count++; } return; } // Include the current character in the subsequence generateSubsequences(sub + str[index], index + 1); // Exclude the current character from the subsequence generateSubsequences(sub, index + 1); } // Start generating subsequences from the beginning of the string generateSubsequences("", 0); return count; } // Example usage: const str = "abcde"; const arr = ["a", "ab", "bd", "abc", "acde", "eab"]; const result = countSubsequences(str, arr); console.log(result);
Sortie
Ce qui suit est la sortie de la console -
5
Méthode 2 : Méthode à deux points
L'algorithme parcourt chaque chaîne du tableau et utilise deux pointeurs, l'un désigné vers la chaîne donnée et l'autre vers la chaîne en cours d'examen. Ces pointeurs sont initialement situés au niveau du caractère de début de leurs chaînes correspondantes, puis avancent jusqu'à ce que la fin de l'une ou l'autre chaîne soit rencontrée. Chaque fois qu'une sous-séquence valide est déterminée, l'indicateur numérique est incrémenté. Enfin, l'algorithme fournit la valeur numérique de l'indicateur comme résultat final.
Exemple
La fonction countValidSubsequences prend un tableau de chaînes (arr) et une chaîne cible (target) comme paramètres. Il parcourt chaque chaîne de l'arr et compare ses caractères à ceux de la cible à l'aide d'une boucle imbriquée. Si les caractères correspondent, l'index est incrémenté ; s'ils ne correspondent pas, seul l'index de la cible est incrémenté. Si la chaîne entière est une sous-séquence valide, le décompte est incrémenté. Après avoir parcouru toutes les chaînes de arr, la fonction renvoie le décompte final.
function countValidSubsequences(arr, target) { let count = 0; for (let i = 0; i < arr.length; i++) { const current = arr[i]; let j = 0; let k = 0; while (j < current.length && k < target.length) { if (current[j] === target[k]) { j++; k++; } else { k++; } } if (j === current.length) { count++; } } return count; } // Example usage: const str = "abcde"; const arr = ["a", "ab", "bd", "abc", "acde", "eab"]; const result = countValidSubsequences(arr, str); console.log(result);
Sortie
Ce qui suit est la sortie de la console -
5
Conclusion
En fin de compte, cette exploration du comptage de sous-chaînes correspondantes en JavaScript a révélé un certain nombre de techniques intelligentes qui peuvent être utilisées pour accomplir cette tâche efficacement. En employant divers algorithmes et en tirant parti des fonctionnalités rarement utilisées du langage, les programmeurs peuvent concevoir des solutions élégantes et ingénieuses. Il faut reconnaître que la complexité de la correspondance des sous-chaînes nécessite un examen attentif des cas extrêmes et des impacts potentiels sur les performances. Cependant, grâce à ces nouvelles connaissances, les développeurs peuvent aller au-delà des approches traditionnelles et exploiter tout le potentiel de JavaScript pour énumérer et manipuler intelligemment les sous-chaînes. Dans l'ensemble, les connaissances approfondies partagées dans cet article permettent aux programmeurs d'améliorer leurs capacités de codage et de débloquer de nouvelles dimensions du comptage de sous-chaînes en JavaScript.
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

Cet article explore une utilisation efficace du cadre de collections de Java. Il met l'accent sur le choix des collections appropriées (liste, set, map, file d'attente) en fonction de la structure des données, des besoins en performances et de la sécurité des threads. Optimisation de l'utilisation de la collection grâce à

L'article explique comment utiliser les cartes source pour déboguer JavaScript minifiée en le mappant au code d'origine. Il discute de l'activation des cartes source, de la définition de points d'arrêt et de l'utilisation d'outils comme Chrome Devtools et WebPack.

Ce tutoriel expliquera comment créer des graphiques à tarte, anneaux et bulles à l'aide de chart.js. Auparavant, nous avons appris quatre types de graphiques de graphique. Créer des graphiques à tarte et à anneaux Les graphiques à tarte et les graphiques d'anneaux sont idéaux pour montrer les proportions d'un tout divisé en différentes parties. Par exemple, un graphique à secteurs peut être utilisé pour montrer le pourcentage de lions mâles, de lions féminins et de jeunes lions dans un safari, ou le pourcentage de votes que différents candidats reçoivent lors des élections. Les graphiques à tarte ne conviennent que pour comparer des paramètres ou des ensembles de données uniques. Il convient de noter que le graphique à tarte ne peut pas dessiner des entités avec une valeur nulle car l'angle du ventilateur dans le graphique à tarte dépend de la taille numérique du point de données. Cela signifie toute entité avec une proportion nulle

Une fois que vous avez maîtrisé le didacticiel TypeScript de niveau d'entrée, vous devriez être en mesure d'écrire votre propre code dans un IDE qui prend en charge TypeScript et de le compiler en JavaScript. Ce tutoriel plongera dans divers types de données dans TypeScript. JavaScript a sept types de données: null, non défini, booléen, numéro, chaîne, symbole (introduit par ES6) et objet. TypeScript définit plus de types sur cette base, et ce tutoriel les couvrira tous en détail. Type de données nuls Comme javascript, null en typeScript
