Algorytm wyszukiwania tekstowego jest podstawową metodą przetwarzania tekstu i wyszukiwania informacji. Algorytm ten pozwala nam zlokalizować i zidentyfikować wystąpienia podłańcucha(lub wzorca) w większym fragmencie tekstu.
Jak to działa
- Zacznij od większego fragmentu tekstu(lub dokumentu) i podłańcucha do wyszukania.
- Przejrzyj kolejno każdy znak tekstu.
- Porównaj podłańcuch z fragmentem tekstu, który ma taką samą długość jak podłańcuch. Jeśli zostanie znalezione dopasowanie, zapisz bieżącą pozycję.
- Przejdź do następnej pozycji i kontynuuj porównanie.
Przykład
Rozważ tekst: „Wyszukajmy podłańcuch w tym tekście, aby zobaczyć, jak działa algorytm”.
I podłańcuch do wyszukania: „podłańcuch”
- Zacznij od pozycji 0. Porównaj
Let'z „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 1. Porównaj
et'sz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 2. Porównaj
t's" z "podłańcuchem". Brak dopasowania. - Przejdź do pozycji 3. Porównaj
's sz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 4. Porównaj
sez „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 5. Porównaj
seaz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 6. Porównaj
earcz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 7. Porównaj
archz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 8. Porównaj
rch" z "podłańcuchem". Brak dopasowania. - Przejdź do pozycji 9. Porównaj
ch wz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 10. Porównaj
h wiz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 11. Porównaj "
witz "podłańcuchem". Brak dopasowania. - Przejdź do pozycji 12. Porównaj
withz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 13. Porównaj
ithiz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 14. Porównaj
thinz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 15. Porównaj
hinnz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 16. Porównaj
in tz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 17. Porównaj
n thz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 18. Porównaj "
thiz "podłańcuchem". Brak dopasowania. - Przejdź do pozycji 19. Porównaj
thisz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 20. Porównaj
his" z "podłańcuchem". Brak dopasowania. - Przejdź do pozycji 21. Porównaj
is tz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 22. Porównaj
s tez „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 23. Porównaj
ubstz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 24. Porównaj
bstrz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 25. Porównaj
strez „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 26. Porównaj
trinz „podłańcuchem”. Nie pasuje. - Przejdź do pozycji 27. Porównaj
ringz „podłańcuchem”. Znaleziono dopasowanie, pozycja rekordu 27.
Podłańcuch „substring” znajduje się na pozycji 27 w tekście.
Przykładowy kod w C++
#include <iostream>
#include <string>
#include <vector>
std::vector<int> textSearch(const std::string& text, const std::string& query) {
std::vector<int> positions;
for(int i = 0; i <= text.length()- query.length(); ++i) {
int j = 0;
while(j < query.length() && text[i + j] == query[j]) {
++j;
}
if(j == query.length()) {
positions.push_back(i);
}
}
return positions;
}
int main() {
std::string text = "Let's search for a substring within this text to see how the algorithm works.";
std::string query = "substring";
std::vector<int> result = textSearch(text, query);
std::cout << "Substring found at positions: ";
for(int pos: result) {
std::cout << pos << ";
}
std::cout << std::endl;
return 0;
}
W tym przykładzie textSearch funkcja służy do znajdowania pozycji podłańcucha „substring” w tekście. Wynikiem będzie wektor zawierający początkowe pozycje meczów.

