weather
This commit is contained in:
36
JavaScript/Levenshtein_distance/index.js
Normal file
36
JavaScript/Levenshtein_distance/index.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* @param {string} a
|
||||
* @param {string} b
|
||||
*/
|
||||
module.exports.distance = function(a, b) {
|
||||
aL = a.length;
|
||||
bL = b.length;
|
||||
|
||||
if (aL == 0) return aL;
|
||||
if (bL == 0) return bL;
|
||||
|
||||
let matrix = [];
|
||||
|
||||
for (let i = 0; i <= bL; i++) {
|
||||
matrix[i] = [i];
|
||||
}
|
||||
|
||||
for (let i = 0; i <= aL; i++) {
|
||||
matrix[0][i] = i;
|
||||
}
|
||||
|
||||
for (let i = 1; i <= bL; i++) {
|
||||
for (let j = 1; j <= aL; j++) {
|
||||
if (b.charAt(i-1) == a.charAt(j-1)) {
|
||||
matrix[i][j] = matrix[i-1][j-1];
|
||||
} else {
|
||||
matrix[i][j] = Math.min(matrix[i-1][j-1] + 1,
|
||||
Math.min(matrix[ i ][j-1] + 1,
|
||||
matrix[i-1][j] + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return matrix[bL][aL];
|
||||
}
|
||||
// we're doing the matrix implimentation https://en.wikipedia.org/wiki/Levenshtein_distance
|
||||
Reference in New Issue
Block a user