Dieser Artikel beschreibt den Java -String -Ähnlichkeitsalgorithmus. Teilen Sie es für Ihre Referenz. Die spezifische Implementierungsmethode lautet wie folgt:
Kopieren Sie den Code wie folgt: öffentliche Klasse Levenshtein {
private int compare (String str, String Ziel) {
int d [] []; // Matrix
int n = str.length ();
int m = target.length ();
int i;
Int J; // Durchqueren
char ch1; // str
char ch2; // Ziel
int temperatur; // den Wert des Wertes an einer bestimmten Matrixposition aufzeichnen, entweder 0 oder 1
if (n == 0) {
Rückkehr M;
}
if (m == 0) {
return n;
}
d = neuer int [n + 1] [m + 1];
für (i = 0; i <= n; i ++) {// Initialisieren Sie die erste Spalte
D [i] [0] = i;
}
für (j = 0; j <= m; j ++) {// Initialisieren Sie die erste Zeile
D [0] [j] = j;
}
für (i = 1; i <= n; i ++) {// traverse str travers
ch1 = str.charat (i - 1);
// Gehen Sie zu dem Match -Ziel
für (j = 1; j <= m; j ++) {
CH2 = target.charat (j - 1);
if (ch1 == ch2) {
temp = 0;
} anders {
temp = 1;
}
// +1 links, +1 oben, +Temperatur in der oberen linken Ecke, um das Minimum zu nehmen
d [i] [j] = min (d [i - 1] [j] + 1, d [i] [j - 1] + 1, d [i - 1] [j - 1] + temp);
}
}
return d [n] [m];
}
private int min (int eins, int zwei, int drei) {
return (eins = eins <zwei? Eins: zwei) <drei?
}
/**
* Holen Sie sich die Ähnlichkeit von zwei Saiten
*
* @param str
* @param Ziel
*
* @zurückkehren
*/
public float GetSIMilarityRatio (String Str, String Ziel) {
return 1 - (float) compare (str, target) / math.max (Str.Length (), target.length ());
}
public static void main (String [] args) {
Levenshtein LT = neuer Levenshtein ();
String str = "ab";
String target = "ac";
System.out.println ("yexityRatio =" + lt.getSIMilarityRatio (str, Ziel));
}
}
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.