Algorytm wyszukiwania ciągów służy do znajdowania wystąpień określonego wzorca(podciągu) w większym tekście(łańcuchu). Algorytm ten odgrywa kluczową rolę w zadaniach przetwarzania, wyszukiwania i manipulacji tekstem.
Jak to działa
- Zacznij od tekstu(ciągu) i wzorca(podciągu), który chcesz wyszukać.
- Przejrzyj tekst po jednym znaku na raz.
- Dla każdego znaku w tekście porównaj go z pierwszym znakiem wzorca.
- Jeśli występuje dopasowanie, sprawdź, czy kolejne znaki również pasują do wzorca.
- Jeśli wzór jest całkowicie dopasowany, zapisz pozycję początkową dopasowania.
- Kontynuuj wyszukiwanie wzoru w tekście.
Przykład
Rozważ tekst: „ababcababcabcabc” i wzór: „abc”
- Zacznij od pozycji 0. Porównaj „a” z pierwszym znakiem „a” we wzorze.
- Znaleziono dopasowanie, przejdź do kolejnych znaków: „b” z „b” i „a” z „c”.
- Kontynuuj dopasowywanie: „b” z „a”, „a” z „b” i „b” z „c”.
- Mecz nie powiódł się na pozycji 2.
- Zacznij ponownie od pozycji 3. Porównaj „a” z pierwszym znakiem „a” we wzorze.
- Udane dopasowanie: „a” z „a”, „b” z „b” i „c” z „c”.
- Rekordowa pozycja 3.
Wzór „abc” znajduje się w pozycjach 0, 6 i 9.
Przykładowy kod w C++
W tym przykładzie stringSearch
funkcja służy do znajdowania wystąpień wzorca „abc” w tekście „ababcababcabcabc”. Wynikiem będzie wektor zawierający początkowe pozycje meczów.