تصف هذه المقالة خوارزمية تشابه سلسلة Java. شاركه للرجوع إليه. طريقة التنفيذ المحددة هي كما يلي:
انسخ الرمز على النحو التالي: الفئة العامة Levenshtein {
Private Int Compare (String str ، سلسلة الهدف) {
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) {
العودة ن ؛
}
d = new int [n + 1] [m + 1] ؛
لـ (i = 0 ؛ i <= n ؛ i ++) {// تهيئة العمود الأول
d [i] [0] = i ؛
}
لـ (j = 0 ؛ j <= m ؛ j ++) {// تهيئة السطر الأول
d [0] [j] = j ؛
}
لـ (i = 1 ؛ i <= n ؛ i ++) {// traverse str
CH1 = str.charat (i - 1) ؛
// اذهب لمطابقة الهدف
لـ (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) ؛
}
}
العودة d [n] [m] ؛
}
Private Int Min (int one ، int two ، int three) {
العودة (واحد = واحد؟ واحد: اثنان) <ثلاثة؟
}
/**
* احصل على تشابه سلسلتين
*
* param str
* @Param Target
*
* @يعود
*/
تعويم عام getSimilarityRatio (سلسلة Str ، سلسلة الهدف) {
إرجاع 1 - (تعويم) مقارنة (Str ، Target) / Math.Max (str.length () ، target.length ()) ؛
}
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
Levenshtein lt = new Levenshtein () ؛
سلسلة str = "ab" ؛
سلسلة الهدف = "AC" ؛
System.out.println ("adablyRatio =" + lt.getSimilarityRatio (Str ، Target)) ؛
}
}
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.