1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- var vector = [];
- var bChars = [];
- exports = function(a, b) {
- if (a === b) return 0;
- if (a.length > b.length) {
- var tmp = a;
- a = b;
- b = tmp;
- }
- var aLen = a.length;
- var bLen = b.length;
- if (!aLen) return bLen;
- if (!bLen) return aLen;
- while (aLen > 0 && a.charCodeAt(aLen - 1) === b.charCodeAt(bLen - 1)) {
- aLen--;
- bLen--;
- }
- if (!aLen) return bLen;
- var start = 0;
- while (start < aLen && a.charCodeAt(start) === b.charCodeAt(start)) {
- start++;
- }
- aLen -= start;
- bLen -= start;
- if (!aLen) return bLen;
- var current = 0;
- var left;
- var above;
- var charA;
- var i = 0;
- while (i < bLen) {
- bChars[i] = b.charCodeAt(start + i);
- vector[i] = ++i;
- }
- for (var _i = 0; _i < aLen; _i++) {
- left = _i;
- current = _i + 1;
- charA = a.charCodeAt(start + _i);
- for (var j = 0; j < bLen; j++) {
- above = current;
- current = left;
- left = vector[j];
- if (charA !== bChars[j]) {
- if (left < current) current = left;
- if (above < current) current = above;
- current++;
- }
- vector[j] = current;
- }
- }
- return current;
- };
- module.exports = exports;
|