pub fn edit_distance(a: &str, b: &str) -> usizeExpand description
Levenshtein masofasi — bir satrni ikkinchisiga aylantirish uchun kerak bo’lgan minimal amallar soni (qo’shish, o’chirish, almashtirish).
Holat: dp[i][j] = a[..i] ni b[..j] ga aylantirish narxi.
O’tish: belgilar teng bo’lsa — bepul; aks holda uchta variantning eng arzoni:
dp[i][j] = 1 + min( dp[i-1][j] ← o'chirish
dp[i][j-1] ← qo'shish
dp[i-1][j-1] ← almashtirish )- Time: O(n·m), Space: O(m).
Qayerda ishlatiladi: imlo tuzatgich (“shunday demoqchimidingiz?”), DNA tahlili, fuzzy qidiruv.
§Misol
use rust_algorithms::dp::edit_distance;
assert_eq!(edit_distance("kitten", "sitting"), 3);
assert_eq!(edit_distance("salom", "salom"), 0);
assert_eq!(edit_distance("", "abc"), 3);
assert_eq!(edit_distance("olma", "alma"), 1);