JSFiddle - React, Tailwind, and code Playground
by moeishaa
JavaScript
function distance(a, b) {
var start = 0,
aLen = a.length,
bLen = b.length,
minDistance = Number.MAX_VALUE,
end = Math.min(1.5 * bLen, aLen);
while (true) {
var done = end >= aLen;
if (done) {
end = aLen;
start = Math.max(0, end - 1.5 * bLen);
}
var candid = a.substring(start, end);
for (var i = 0; i <= candid.length - bLen; i++) {
var str = candid.substring(i, bLen + i),
dis = 0;
for (var j=0; dis < minDistance && j < str.length; j++) {
dis += str.charAt(j) == b.charAt(j) ? 0 : 1;
}
minDistance = dis;
}
if (minDistance == 0 || done) break;
start += 0.5 * bLen;
end += 0.5 * bLen;
}
return (1 - minDistance / bLen) * 100;
}