Comment implémenter l'algorithme KMP en C#
Comment implémenter l'algorithme KMP en C#
L'algorithme KMP (Knuth-Morris-Pratt) est un algorithme de correspondance de chaînes efficace utilisé pour trouver la position des chaînes de modèle dans les chaînes de texte. Son idée principale est d’utiliser les informations partielles qui ont été mises en correspondance pour éviter des comparaisons inutiles.
La clé pour implémenter l'algorithme KMP est de créer une table de correspondance partielle (Partial Match Table), également appelée tableau suivant. Ce tableau enregistre la longueur de la sous-chaîne de suffixe correspondante la plus longue de chaque sous-chaîne de préfixe dans la chaîne de modèle.
Voici les étapes spécifiques et des exemples de code pour implémenter l'algorithme KMP en C# :
Étape 1 : Créer une table de correspondance partielle
- Définissez ensuite un tableau d'entiers avec une taille égale à la longueur de la chaîne de modèle et initialisez suivant[0] = -1 .
- Définissez deux pointeurs i et j, avec respectivement les valeurs initiales 0 et -1.
- Déterminez si i atteint la fin de la chaîne de motif, sinon, effectuez les étapes suivantes :
a. Si j est égal à -1 ou si le caractère actuel est égal au caractère correspondant au pointeur j, alors i et j le feront. être déplacé vers l'arrière en même temps, et next[i ] = j.
b. Sinon, déplacez le pointeur j vers la position next[j] et continuez la correspondance. - Renvoyez ensuite la table de correspondance partielle construite.
Voici le code permettant de mettre en œuvre les étapes ci-dessus :
private int[] BuildNext(string pattern) { int[] next = new int[pattern.Length]; next[0] = -1; int i = 0, j = -1; while (i < pattern.Length - 1) { if (j == -1 || pattern[i] == pattern[j]) { i++; j++; next[i] = j; } else { j = next[j]; } } return next; }
Étape 2 : Utilisez une table de correspondance partielle pour la correspondance
- Définissez deux pointeurs i et j, pointant vers les positions de départ de la chaîne de texte et du motif chaîne respectivement.
- Déterminez si i et j ont atteint la fin. Sinon, effectuez les étapes suivantes :
a. Si j est égal à -1 ou si le caractère actuel est égal au caractère correspondant au pointeur j, alors i et j se déplaceront. en arrière en même temps.
b. Sinon, déplacez le pointeur j vers la position next[j] et continuez la correspondance. - Si le pointeur j pointe vers la fin de la chaîne de modèle, cela signifie que la correspondance est réussie et l'index de la position de départ dans la chaîne de texte est renvoyé.
- Si le match échoue, -1 sera renvoyé.
Voici le code expliquant comment implémenter les étapes ci-dessus :
private int KMP(string text, string pattern) { int[] next = BuildNext(pattern); int i = 0, j = 0; while (i < text.Length && j < pattern.Length) { if (j == -1 || text[i] == pattern[j]) { i++; j++; } else { j = next[j]; } } if (j == pattern.Length) { return i - j; } return -1; }
En appelant la méthode KMP et en transmettant la chaîne de texte et la chaîne de modèle, vous pouvez obtenir le résultat correspondant.
Ci-dessus sont les étapes et les exemples de code sur la façon d'implémenter l'algorithme KMP en C#. En utilisant des tables de correspondance partielle, l'algorithme KMP peut améliorer efficacement l'efficacité de la correspondance de chaînes, en particulier lors du traitement de chaînes de texte volumineuses et de chaînes de modèles longues, avec de meilleures performances.
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)

Comment écrire un algorithme de prévision de séries chronologiques à l'aide de C# La prévision de séries chronologiques est une méthode permettant de prédire les tendances futures des données en analysant les données passées. Il a de nombreuses applications dans de nombreux domaines tels que la finance, les ventes et les prévisions météorologiques. Dans cet article, nous présenterons comment écrire des algorithmes de prévision de séries chronologiques en utilisant C#, avec des exemples de code spécifiques. Préparation des données Avant d'effectuer des prévisions de séries chronologiques, vous devez d'abord préparer les données. D’une manière générale, les données de séries chronologiques doivent être suffisamment longues et classées par ordre chronologique. Vous pouvez l'obtenir à partir de la base de données ou

Comment utiliser C# pour écrire des algorithmes d'apprentissage profond Introduction : Avec le développement rapide de l'intelligence artificielle, la technologie d'apprentissage profond a obtenu des résultats révolutionnaires dans de nombreux domaines. Afin de mettre en œuvre l’écriture et l’application d’algorithmes d’apprentissage profond, le langage le plus couramment utilisé est actuellement Python. Cependant, pour les développeurs qui préfèrent utiliser le langage C#, il est également possible d’utiliser C# pour écrire des algorithmes de deep learning. Cet article explique comment écrire des algorithmes d'apprentissage profond à l'aide de C# et fournit des exemples de code spécifiques. 1. Créez un projet C# Avant de commencer à écrire un algorithme d'apprentissage en profondeur, vous devez d'abord créer.

Comment implémenter l'algorithme glouton en C# L'algorithme glouton (algorithme Greedy) est une méthode de résolution de problèmes couramment utilisée. Il sélectionne à chaque fois la solution optimale actuelle dans l'espoir d'obtenir la solution optimale globale. En C#, nous pouvons utiliser des algorithmes gloutons pour résoudre de nombreux problèmes pratiques. Cet article présentera comment implémenter l'algorithme glouton en C# et fournira des exemples de code spécifiques. 1. Principes de base de l'algorithme glouton L'idée de base de l'algorithme glouton est de choisir à chaque fois la solution optimale actuelle, quel que soit l'impact possible des étapes ultérieures. Ce genre de pensée

Comment utiliser C# pour écrire un algorithme de recherche en largeur d'abord La recherche en largeur d'abord (BFS) est un algorithme de recherche de graphiques couramment utilisé pour parcourir un graphique ou un arbre en fonction de la largeur. Dans cet article, nous explorerons comment écrire un algorithme de recherche en largeur en utilisant C# et fournirons des exemples de code concrets. Principe de l'algorithme Le principe de base de l'algorithme de recherche en largeur est de partir du point de départ de l'algorithme et d'étendre la plage de recherche couche par couche jusqu'à ce que la cible soit trouvée ou que l'intégralité du graphique soit parcourue. Il est généralement implémenté via des files d’attente.

Comment écrire l'algorithme de codage de Huffman en utilisant C# Introduction : L'algorithme de codage de Huffman est un algorithme sans perte utilisé pour la compression des données. Lors de la transmission ou du stockage des données, les données sont efficacement compressées en utilisant des codes plus courts pour les caractères plus fréquents et des codes plus longs pour les caractères moins fréquents. Cet article explique comment écrire l'algorithme de codage de Huffman en utilisant C# et fournit des exemples de code spécifiques. Le principe de base de l'algorithme de codage de Huffman L'idée principale de l'algorithme de codage de Huffman est de construire un arbre de Huffman. Premièrement, en comptant la fréquence des occurrences de caractères, le

Comment écrire un algorithme d'analyse de cluster à l'aide de C# 1. Présentation L'analyse de cluster est une méthode d'analyse de données qui sépare les points de données différents les uns des autres en regroupant les points de données similaires en clusters. Dans les domaines de l'apprentissage automatique et de l'exploration de données, l'analyse clusterisée est couramment utilisée pour créer des classificateurs, explorer la structure des données et découvrir des modèles cachés. Cet article explique comment utiliser C# pour écrire un algorithme d'analyse de cluster. Nous utiliserons l'algorithme K-means comme exemple d'algorithme et fournirons des exemples de code spécifiques. 2. Introduction à l'algorithme K-means L'algorithme K-means est le plus couramment utilisé

Comment utiliser C# pour écrire un algorithme de tri rapide. L'algorithme de tri rapide est un algorithme de tri efficace. Son idée est de diviser le tableau en sous-problèmes plus petits grâce à l'idée de diviser pour régner, puis de résoudre ces sous-problèmes. problèmes de manière récursive, et enfin les fusionner pour obtenir la réponse à l'ensemble du problème. Ci-dessous, nous présenterons en détail comment utiliser C# pour écrire un algorithme de tri rapide et donnerons des exemples de code pertinents. Idée d'algorithme L'idée du tri rapide peut être résumée en trois étapes suivantes : sélectionner un élément de référence, généralement le premier élément du tableau ;

Comment utiliser C# pour écrire l'algorithme d'arbre couvrant minimum L'algorithme d'arbre couvrant minimum est un algorithme important de la théorie des graphes, qui est utilisé pour résoudre le problème de connectivité des graphiques. En informatique, un arbre couvrant minimum fait référence à un arbre couvrant d'un graphe connecté dans lequel la somme des poids de toutes les arêtes de l'arbre couvrant est la plus petite. Cet article explique comment utiliser C# pour écrire l'algorithme d'arbre couvrant minimum et fournit des exemples de code spécifiques. Tout d’abord, nous devons définir une structure de données graphique pour représenter le problème. En C#, vous pouvez utiliser une matrice de contiguïté pour représenter un graphique. Une matrice de contiguïté est un tableau à deux dimensions dans lequel chaque élément représente
