Реализации алгоритмов/Расстояние Левенштейна: различия между версиями
Содержимое удалено Содержимое добавлено
→Алгоритм Левенштейна на языке JavaScript: обновление данных |
→Алгоритм Левенштейна на языке JavaScript: обновление данных |
||
Строка 99:
* @param {string} s1 Исходная строка
* @param {string} s2 Сравниваемая строка
* @param {object} [costs] Веса операций { [replace], [case], [insert], [delete] }
* @return {number} Расстояние Левенштейна
*/
function levenshtein(s1, s2,
var i, j, l1, l2, flip, ch, chl, ii, ii2, cost, cutHalf;
l1 = s1.length;
l2 = s2.length;
var ci = costs.insert || 1;
var cd = costs.delete || 1;
cutHalf = flip = Math.max(l1, l2);
Строка 126:
for (i = 0; i < l1; ++i, flip = cutHalf - flip) {
ch = s1[i];
chl = ch.toLocaleString();
buf[flip] = (i + 1) * minI;
Строка 133 ⟶ 134 :
for (j = 0; j < l2; ++j, ++ii, ++ii2) {
buf[ii + 1] = Math.min(buf[ii2 + 1] + cd, buf[ii] + ci, buf[ii2] + cost);
}
}
|