Skip to content

Instantly share code, notes, and snippets.

@abronte
Created March 21, 2012 02:49
Show Gist options
  • Select an option

  • Save abronte/2143903 to your computer and use it in GitHub Desktop.

Select an option

Save abronte/2143903 to your computer and use it in GitHub Desktop.
String Distance
stringDistance: function(s1, s2) {
// sift3: http://siderite.blogspot.com/2007/04/super-fast-and-accurate-string-distance.html
if (s1 == null || s1.length === 0) {
if (s2 == null || s2.length === 0) {
return 0;
} else {
return s2.length;
}
}
if (s2 == null || s2.length === 0) {
return s1.length;
}
var c = 0;
var offset1 = 0;
var offset2 = 0;
var lcs = 0;
var maxOffset = 5;
while ((c + offset1 < s1.length) && (c + offset2 < s2.length)) {
if (s1[c + offset1] == s2[c + offset2]) {
lcs++;
} else {
offset1 = 0;
offset2 = 0;
for (var i = 0; i < maxOffset; i++) {
if ((c + i < s1.length) && (s1[c + i] == s2[c])) {
offset1 = i;
break;
}
if ((c + i < s2.length) && (s1[c] == s2[c + i])) {
offset2 = i;
break;
}
}
}
c++;
}
return (s1.length + s2.length) /2 - lcs;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment