Este artículo describe el algoritmo de similitud de cadena Java. Compártelo para su referencia. El método de implementación específico es el siguiente:
Copie el código de la siguiente manera: Public Class Levenshtein {
private int compare (string str, string target) {
int d [] [];
int n = str.length ();
int m = target.length ();
int i;
int j;
char ch1;
Char CH2;
int temp; / Registre el incremento del valor en una determinada posición de la matriz, ya sea 0 o 1
if (n == 0) {
regresar m;
}
if (m == 0) {
regresar n;
}
d = nuevo int [n + 1] [m + 1];
para (i = 0; i <= n; i ++) {// Inicializa la primera columna
d [i] [0] = i;
}
para (j = 0; j <= m; j ++) {// Inicializa la primera línea
D [0] [j] = j;
}
para (i = 1; i <= n; i ++) {// Traverse str
ch1 = str.charat (i - 1);
// ir a un objetivo coincidente
para (j = 1; j <= m; j ++) {
CH2 = Target.Charat (J - 1);
if (ch1 == ch2) {
temp = 0;
} demás {
temp = 1;
}
// +1 a la izquierda, +1 en la parte superior, +temperatura en la esquina superior izquierda para tomar el mínimo
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 uno, int dos, int tres) {
return (uno = uno <dos? uno: dos) <tres?
}
/**
* Obtener la similitud de dos cuerdas
*
* @param str
* @param objetivo
*
* @devolver
*/
Public float getSimilarityratio (String Str, String Target) {
return 1 - (float) compare (str, target) / math.max (str.length (), target.length ());
}
public static void main (string [] args) {
Levenshtein lt = new Levenshtein ();
Cadena str = "ab";
Cadena Target = "AC";
System.out.println ("SimilityRatio =" + lt.getSimilarityRatio (STR, Target));
}
}
Espero que este artículo sea útil para la programación Java de todos.