Skip to content

Instantly share code, notes, and snippets.

@akhileshdarjee
Created April 13, 2022 08:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akhileshdarjee/8caefe1b66455aacef2f03562a500940 to your computer and use it in GitHub Desktop.
Save akhileshdarjee/8caefe1b66455aacef2f03562a500940 to your computer and use it in GitHub Desktop.
Similarity Percentage between two strings in Javascript
var str1 = 'Hello World';
var str2 = 'World';
var similarity_percentage = Math.round(similarity(str1, str2) * 10000) / 100;
function similarity(s1, s2) {
var longer = s1;
var shorter = s2;
if (s1.length < s2.length) {
longer = s2;
shorter = s1;
}
var longerLength = longer.length;
if (longerLength === 0) {
return 1.0;
}
return (longerLength - editDistance(longer, shorter)) / parseFloat(longerLength);
}
function editDistance(s1, s2) {
s1 = s1.toLowerCase();
s2 = s2.toLowerCase();
var costs = new Array();
for (var i = 0; i <= s1.length; i++) {
var lastValue = i;
for (var j = 0; j <= s2.length; j++) {
if (i == 0) {
costs[j] = j;
}
else {
if (j > 0) {
var newValue = costs[j - 1];
if (s1.charAt(i - 1) != s2.charAt(j - 1)) {
newValue = Math.min(Math.min(newValue, lastValue),
costs[j]) + 1;
}
costs[j - 1] = lastValue;
lastValue = newValue;
}
}
}
if (i > 0) {
costs[s2.length] = lastValue;
}
}
return costs[s2.length];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment