You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
heimdall/commands.js

35 lines
1.1 KiB
JavaScript

// Compute the edit distance between the two given strings
function getEditDistance(sourceString, targetString) {
if (sourceString.length === 0) return targetString.length;
if (targetString.length === 0) return sourceString.length;
let matrix = [];
// increment along the first column of each row
for (let i = 0; i <= targetString.length; i++) {
matrix[i] = [i];
}
// increment each column in the first row
for (let j = 0; j <= sourceString.length; j++) {
matrix[0][j] = j;
}
// Fill in the rest of the matrix
for (let i = 1; i <= targetString.length; i++) {
for (let j = 1; j <= sourceString.length; j++) {
let cost = 1;
if (targetString.charAt(i-1) === sourceString.charAt(j-1)) {
cost = 0;
}
matrix[i][j] = Math.min(matrix[i-1][j-1] + cost, // substitution
matrix[i][j-1] + 1, // insertion
matrix[i-1][j] + 1 // deletion
);
}
}
return matrix[targetString.length][sourceString.length];
}
//console.log(getEditDistance("saturday", "sunday")); //sollte 3 ergeben