Skip to main content

edit_distance

Function edit_distance 

Source
pub fn edit_distance(a: &str, b: &str) -> usize
Expand 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);