pub fn rabin_karp(text: &str, pattern: &str) -> Vec<usize>Expand description
Rabin-Karp — xesh yordamida qidirish (rolling hash).
G’oya: namunaning xeshini hisoblaymiz va matn bo’ylab siljuvchi oynaning xeshini O(1) da yangilaymiz (chiqqanini ayirib, kirganini qo’shib). Xeshlar teng bo’lsa — haqiqiy tenglikni tekshiramiz (soxta moslik bo’lishi mumkin).
- Time: o’rtacha O(n + m), eng yomon holatda O(n·m).
- Kuchli tomoni: bir vaqtda ko’p namunani qidirishga oson kengayadi (plagiat tekshirgichlar shu tamoyilda ishlaydi).
§Misol
use rust_algorithms::other::strings::{kmp_search, rabin_karp};
let matn = "the quick brown fox jumps over the lazy dog";
assert_eq!(rabin_karp(matn, "the"), kmp_search(matn, "the"));
assert_eq!(rabin_karp(matn, "fox"), vec![16]);