Este artigo descreve o algoritmo de similaridade de cordas Java. Compartilhe para sua referência. O método de implementação específico é o seguinte:
Copie o código da seguinte forma: Public Class Levenshtein {
private int compare (string str, string alvo) {
int d [] [];
int n = str.Length ();
int m = Target.Length ();
int i; // atravessando str
int j; // alvo de travessia
char ch1; // str
CHAR CH2;
int temp;
if (n == 0) {
retornar m;
}
if (m == 0) {
retornar n;
}
d = novo int [n + 1] [m + 1];
for (i = 0; i <= n; i ++) {// inicialize a primeira coluna
d [i] [0] = i;
}
for (j = 0; j <= m; j ++) {// inicialize a primeira linha
d [0] [j] = j;
}
para (i = 1; i <= n; i ++) {// Traverse str
CH1 = str.Charat (i - 1);
// Vá para combinar o alvo
for (j = 1; j <= m; j ++) {
CH2 = Target.Charat (J - 1);
if (CH1 == CH2) {
temp = 0;
} outro {
temp = 1;
}
// +1 à esquerda, +1 na parte superior, +temp no canto superior esquerdo para pegar o mínimo
d [i] [j] = min (d [i - 1] [j] + 1, d [i] [j - 1] + 1, d [i - 1] [j - 1] + temp);
}
}
retornar d [n] [m];
}
privado int min (int um, int dois, int três) {
retornar (um = um <dois? um: dois) <três? um: três;
}
/**
* Obtenha a semelhança de duas cordas
*
* @param str
* @param alvo
*
* @retornar
*/
public float getSimilarityRatio (string str, string alvo) {
Retorno 1 - (Float) Compare (str, alvo) / Math.max (str.Length (), Target.Length ());
}
public static void main (string [] args) {
Levenshtein LT = novo Levenshtein ();
String str = "ab";
String Target = "AC";
System.out.println ("similarityratio =" + lt.getSimilarityRatio (str, destino));
}
}
Espero que este artigo seja útil para a programação Java de todos.