Maison développement back-end Tutoriel C#.Net Comment implémenter l'algorithme KMP en C#

Comment implémenter l'algorithme KMP en C#

Sep 19, 2023 pm 01:31 PM
字符串匹配 c#programmation algorithme kmp

Comment implémenter lalgorithme 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

  1. 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 .
  2. Définissez deux pointeurs i et j, avec respectivement les valeurs initiales 0 et -1.
  3. 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.
  4. 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;
}
Copier après la connexion

Étape 2 : Utilisez une table de correspondance partielle pour la correspondance

  1. 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.
  2. 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.
  3. 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é.
  4. 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;
}
Copier après la connexion

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!

Déclaration de ce site Web
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

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment écrire un algorithme de prévision de séries chronologiques en utilisant C# Comment écrire un algorithme de prévision de séries chronologiques en utilisant C# Sep 19, 2023 pm 02:33 PM

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 écrire des algorithmes d'apprentissage profond en utilisant C# Comment écrire des algorithmes d'apprentissage profond en utilisant C# Sep 19, 2023 am 09:53 AM

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 un algorithme glouton en C# Comment implémenter un algorithme glouton en C# Sep 19, 2023 am 11:48 AM

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 écrire un algorithme de recherche en largeur en utilisant C# Comment écrire un algorithme de recherche en largeur en utilisant C# Sep 19, 2023 am 11:45 AM

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# Comment écrire l'algorithme de codage de Huffman en utilisant C# Sep 21, 2023 pm 03:14 PM

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 en utilisant C# Comment écrire un algorithme d'analyse de cluster en utilisant C# Sep 19, 2023 pm 02:40 PM

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 écrire un algorithme de tri rapide en utilisant C# Comment écrire un algorithme de tri rapide en utilisant C# Sep 19, 2023 pm 03:28 PM

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 écrire l'algorithme d'arbre couvrant minimum en utilisant C# Comment écrire l'algorithme d'arbre couvrant minimum en utilisant C# Sep 19, 2023 pm 01:55 PM

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

See all articles