Skip to main content

rabin_karp

Function rabin_karp 

Source
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]);