Quiz Python transcendantal

problème

Ecrivez une fonction haute performance pour trouver la distance d'édition de Levenstein, qui représente la distance entre les chaînes contenant "pleine largeur".

Cependant, le coût d'ajout, de suppression et de remplacement est égal à 1.

Quelle est la distance d'édition de Levenstein?

La distance de Levenstein (Lebenstein Kyori) ou la distance d'édition (Henshu Kyori) est une valeur numérique qui indique à quel point les deux chaînes de caractères sont différentes en théorie de l'information. Plus précisément, il correspond au nombre minimum d'étapes requises pour transformer une chaîne de caractères en une autre en insérant, supprimant ou remplaçant des caractères. Pour donner un exemple de la façon de trouver une distance pratique, transformer «chaton» en «assis» nécessite au moins trois étapes comme indiqué ci-dessous, donc Levenstein entre deux mots La distance est de 3. kitten assis (remplacer «k» par «s») assis (remplacer "e" par "i") assis (insérer «g» pour terminer) (De wikipedia)

Astuce (fonction pour trouver la distance d'édition pour les chaînes de caractères demi-largeur)

def levenshtein(s1, s2):
    if len(s1) < len(s2):
        return levenshtein(s2, s1)
 
    # len(s1) >= len(s2)
    if len(s2) == 0:
        return len(s1)
 
    previous_row = range(len(s2) + 1)
    for i, c1 in enumerate(s1):
        current_row = [i + 1]
        for j, c2 in enumerate(s2):
            insertions = previous_row[j + 1] + 1 # j+1 instead of j since previous_row and current_row are one character longer
            deletions = current_row[j] + 1       # than s2
            substitutions = previous_row[j] + (c1 != c2)
            current_row.append(min(insertions, deletions, substitutions))
        previous_row = current_row
 
    return previous_row[-1]

Cité ci-dessous http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#Python

Recommended Posts

Quiz Python transcendantal
quiz python
Python
python kafka
Les bases de Python ⑤
Python intégré
Notation d'inclusion Python
Technique Python
Étudier Python
Compte à rebours Python 2.7
Mémorandum Python
Python FlowFishMaster
Service Python
fonction python ①
Les bases de Python
Mémo Python
ufo-> python (3)
Notation d'inclusion Python
Installer python
Python Singleton
Les bases de Python ④
Mémorandum Python 2
mémo python
Python Jinja2
Incrément Python
Installer Python 3.4.3.
Essayez Python
Mémo Python
Itératif Python
Algorithme Python
Python2 + mot2vec
[Python] Variables
Fonctions Python
Python sys.intern ()
Tutoriel Python
Fraction Python
underbar python C'est ce que
Résumé Python
Démarrer python
[Python] Trier
Remarque: Python
Les bases de Python ③
Sortie du journal python
Les bases de Python
[Scraping] Scraping Python
Mise à jour Python (2.6-> 2.7)
mémo python
Mémorandum Python
Python #sort
ufo-> python
Python nslookup
apprentissage de python
[Rpmbuild] Python 3.7.3.
Python au prorata (1)
mémorandum python
Télécharger Python
mémorandum python
Mémo Python