В этой статье описывается алгоритм сходства Java String. Поделитесь этим для вашей ссылки. Конкретный метод реализации следующим образом:
Скопируйте код следующим образом: открытый класс 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;
if (n == 0) {
возврат М;
}
if (m == 0) {
возврат n;
}
d = новый int [n + 1] [M + 1];
for (i = 0; i <= n; i ++) {// Инициализировать первый столбец
d [i] [0] = i;
}
for (j = 0; j <= m; j ++) {// Инициализировать первую строку
d [0] [j] = j;
}
for (i = 1; i <= n; i ++) {// traverse str
CH1 = str.Charat (i - 1);
// перейти к Match Target
for (j = 1; j <= m; j ++) {
CH2 = Target.Charat (j - 1);
if (CH1 == CH2) {
темп = 0;
} еще {
темп = 1;
}
// +1 слева, +1 сверху, +темп в верхнем левом углу, чтобы получить минимум
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 One, int two, int three) {
возврат (один = один <два? Один: два) <три?
}
/**
* Получите сходство двух строк
*
* @param str
* @param target
*
* @возвращаться
*/
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 ();
String str = "ab";
String target = "ac";
System.out.println ("sevanityRatio =" + lt.getSimiLaityRatio (str, target));
}
}
Я надеюсь, что эта статья будет полезна для всех Java Programming.