บทความนี้อธิบายอัลกอริทึมความคล้ายคลึงกันของสตริง Java แบ่งปันสำหรับการอ้างอิงของคุณ วิธีการใช้งานเฉพาะมีดังนี้:
คัดลอกรหัสดังต่อไปนี้: คลาสสาธารณะ Levenshtein {
INT ส่วนตัวเปรียบเทียบ (สตริง str, สตริงเป้าหมาย) {
int d [] [];
int n = str.length ();
int m = target.length ();
int i;
int j;
Char CH1;
Char CH2;
int temp;
ถ้า (n == 0) {
กลับ M;
-
ถ้า (m == 0) {
กลับ n;
-
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);
ถ้า (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] + อุณหภูมิ);
-
-
return d [n] [m];
-
INT MIN ส่วนตัว (int one, int สอง, int สาม) {
return (หนึ่ง = หนึ่ง <สอง? หนึ่ง: สอง) <สาม?
-
-
* รับความคล้ายคลึงกันของสองสาย
-
* @param str
* @param เป้าหมาย
-
* @กลับ
-
Public Float GetSimilarityRatio (String Str, String เป้าหมาย) {
return 1 - (float) เปรียบเทียบ (str, target) / math.max (str.length (), target.length ());
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
levenshtein lt = ใหม่ levenshtein ();
string str = "ab";
สตริงเป้าหมาย = "ac";
System.out.println ("amarterityRatio =" + lt.getSimilarityRatio (str, target));
-
-
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน