pub fn lcs_len(a: &str, b: &str) -> usizeExpand description
LCS — eng uzun umumiy ketma-ketlik uzunligi (Longest Common Subsequence).
“Ketma-ketlik” (subsequence) — belgilarni tartibini buzmasdan, lekin
oralaridan tashlab olish mumkin. "olma" va "alma" uchun LCS = "lma".
Holat: dp[i][j] = a[..i] va b[..j] ning LCS uzunligi.
O’tish:
a[i-1] == b[j-1] → dp[i][j] = dp[i-1][j-1] + 1
aks holda → dp[i][j] = max(dp[i-1][j], dp[i][j-1])- Time: O(n·m), Space: O(m) — faqat oldingi qatorni saqlaymiz.
Qayerda ishlatiladi: git diff, DNA ketma-ketliklarini solishtirish,
fayl solishtiruvchi dasturlar.
§Misol
use rust_algorithms::dp::lcs_len;
assert_eq!(lcs_len("olma", "alma"), 3);
assert_eq!(lcs_len("ABCBDAB", "BDCABA"), 4);
assert_eq!(lcs_len("abc", "xyz"), 0);