Levenshtein ระยะทาง
ระยะทาง Levenshtein เป็นเมตริกสตริงสำหรับการวัดความแตกต่างระหว่างสองลำดับ เป็นจำนวนขั้นต่ำของการแก้ไขอักขระตัวเดียวที่จำเป็นในการเปลี่ยนคำหนึ่งเป็นอีกคำหนึ่ง
ตัวอย่างเช่น −
พิจารณา เรามีสองสตริงนี้ -
const str1 = 'hitting'; const str2 = 'kitten';
ระยะห่าง Levenshtein ระหว่างสองสตริงนี้คือ 3 เนื่องจากเราจำเป็นต้องทำการแก้ไขทั้งสามนี้ -
-
ลูกแมว → hitten (แทนที่ "h" สำหรับ "k")
-
hitten → hittin (แทนที่ "i" สำหรับ "e")
-
hittin → hit (ใส่ "g" ต่อท้าย)
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้สองสตริงและคำนวณระยะห่างระหว่าง Levenshtein
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const str1 = 'hitting';
const str2 = 'kitten';
const levenshteinDistance = (str1 = '', str2 = '') => {
const track = Array(str2.length + 1).fill(null).map(() =>
Array(str1.length + 1).fill(null));
for (let i = 0; i <= str1.length; i += 1) {
track[0][i] = i;
}
for (let j = 0; j <= str2.length; j += 1) {
track[j][0] = j;
}
for (let j = 1; j <= str2.length; j += 1) {
for (let i = 1; i <= str1.length; i += 1) {
const indicator = str1[i - 1] === str2[j - 1] ? 0 : 1;
track[j][i] = Math.min(
track[j][i - 1] + 1, // deletion
track[j - 1][i] + 1, // insertion
track[j - 1][i - 1] + indicator, // substitution
);
}
}
return track[str2.length][str1.length];
};
console.log(levenshteinDistance(str1, str2)); ผลลัพธ์
ต่อไปนี้เป็นผลลัพธ์บนคอนโซล -
3