Skip to content

Instantly share code, notes, and snippets.

@tomasdev
Created February 29, 2012 00:48
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomasdev/1936620 to your computer and use it in GitHub Desktop.
Save tomasdev/1936620 to your computer and use it in GitHub Desktop.
Levenshtein JavaScript
var levenshtein = function(str1, str2) {
str1 = str1.split("");
str2 = str2.split("");
var distance = [],
l = str1.length,
m = str2.length,
i, j;
for( i = 0; i <= l; i++ ) {
distance[i] = [i];
}
for( j = 0; j <= m; j++ ) {
distance[0][j] = j;
}
for( i = 1; i <= l; i++ ) {
for( j = 1; j <= m; j++ ) {
distance[i][j] = Math.min( distance[i-1][j]+1, distance[i][j-1]+1, distance[i-1][j-1]+
((str1[i-1]==str2[j-1])?0:1) );
}
}
return distance[l][m];
};
alert(levenshtein('dog', 'fog'));
alert(levenshtein('feet', 'foot'));
alert(levenshtein('foot', 'fleet'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment