Levenshtein Edit Distance
Compute the minimum number of insertions, deletions, and substitutions between two strings, the basis of fuzzy matching and spell suggestions.
Code
export function levenshtein(a, b) {
if (a === b) return 0;
const rows = a.length + 1;
const cols = b.length + 1;
const prev = new Array(cols);
const curr = new Array(cols);
for (let j = 0; j < cols; j++) prev[j] = j;
for (let i = 1; i < rows; i++) {
curr[0] = i;
for (let j = 1; j < cols; j++) {
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
curr[j] = Math.min(prev[j] + 1, curr[j - 1] + 1, prev[j - 1] + cost);
}
for (let j = 0; j < cols; j++) prev[j] = curr[j];
}
return prev[cols - 1];
}Report a problem with this exampleOpens a pre-filled issue on GitHub.