2016-06-29 2 views
-1

Ich bin im Begriff, gleich lange Zeichenfolge zu vergleichen. Dann muss ich die Unterschiede zählen, die sie haben. Ich würde das mit der Hand anfangen - aber da es so viele Methoden gibt, frage ich mich, ob es eine Funktion gibt, die die Unterschiede, die sich ergeben, trotzdem zählt? Oder erstellen Sie eine Sammlung, in der ich die Elemente zählen kann?Gibt es eine Funktion, die die Anzahl der Unterschiede zwischen zwei Zeichenfolgen zurückgibt?

+0

Sie Editierdistanz suchen? Es gibt eine kleine Anzahl von Kisten, die Routinen zur Berechnung bereitstellen, typischerweise unter Verwendung des Levenshtein-Algorithmus. – BurntSushi5

+0

nein, man kann/muss man selbst schreiben –

Antwort

2

Implementierung von Hamming-Distanz ist trivial:

str_a.chars().zip(str_b.chars()).filter(|x| x.0!=x.1).count() 
4

Sie können die strsim Kiste verwenden. Es bietet verschiedene String-Differenz-Methoden wie Hamming, Levenshtein, Damerau-Levenshtein, Jaro und Jaro-Winkler. Ich persönlich mag die Damerau-Levenshtein-Differenz, die die Anzahl der angrenzenden Zeichen zählt, die Sie tauschen müssen, und die Anzahl der Zeichen, die Sie entfernen, einfügen oder ersetzen müssen, um eine der Zeichenfolgen in die andere zu verwandeln.

extern crate strsim; 
let difference = strsim::damerau_levenshtein(a, b); 
+0

ha Hamming wäre genau das, was ich tun muss - aber eine Kiste zu benutzen, um diese Übung zu lösen, wäre irgendwie betrügerisch. Aber ich schaue mir ihre Lösung an. Mybe Ich kann die Funktion/Methode finden, die ich suche. Danke – xetra11

Verwandte Themen