Algoritam pretraživanja teksta temeljna je metoda u obradi teksta i pronalaženju informacija. Ovaj nam algoritam omogućuje lociranje i prepoznavanje pojavljivanja podniza(ili uzorka) unutar većeg dijela teksta.
Kako radi
- Započnite s većim dijelom teksta(ili dokumenta) i podniskom za traženje.
- Redom iterirajte kroz svaki znak teksta.
- Usporedite podniz s dijelom teksta koji ima istu duljinu kao podniz. Ako se pronađe podudaranje, zabilježite trenutni položaj.
- Prijeđite na sljedeću poziciju i nastavite usporedbu.
Primjer
Razmotrite tekst: "Potražimo podniz unutar ovog teksta da vidimo kako algoritam radi."
I podniz za traženje: "podniz"
- Započnite na poziciji 0. Usporedite
Let's "podniskom". Nema podudaranja. - Pomakni se na poziciju 1. Usporedi
et'ss "podniskom". Nema podudaranja. - Pomakni se na poziciju 2. Usporedi
t's" s "podniskom". Nema podudaranja. - Pomakni se na poziciju 3. Usporedi
's ss "podniskom". Nema podudaranja. - Pomakni se na poziciju 4. Usporedi
ses "podniskom". Nema podudaranja. - Pomaknite se na poziciju 5. Usporedite
seas "podniskom". Nema podudaranja. - Pomaknite se na poziciju 6. Usporedite
earcs "podniskom". Nema podudaranja. - Pomaknite se na poziciju 7. Usporedite
archs "podniskom". Nema podudaranja. - Pomakni se na poziciju 8. Usporedi
rch" s "podniskom". Nema podudaranja. - Pomaknite se na poziciju 9. Usporedite
ch ws "podniskom". Nema podudaranja. - Pomaknite se na poziciju 10. Usporedite
h wis "podniskom". Nema podudaranja. - Pomakni se na poziciju 11. Usporedi "
wits "podniskom". Nema podudaranja. - Pomaknite se na poziciju 12. Usporedite
withs "podniskom". Nema podudaranja. - Pomaknite se na poziciju 13. Usporedite
ithis "podniskom". Nema podudaranja. - Pomaknite se na poziciju 14. Usporedite
thins "podniskom". Nema podudaranja. - Pomaknite se na poziciju 15. Usporedite
hinns "podniskom". Nema podudaranja. - Pomaknite se na poziciju 16. Usporedite
in ts "podniskom". Nema podudaranja. - Pomaknite se na poziciju 17. Usporedite
n ths "podniskom". Nema podudaranja. - Pomakni se na poziciju 18. Usporedi "
this "podniskom". Nema podudaranja. - Pomaknite se na poziciju 19. Usporedite
thiss "podniskom". Nema podudaranja. - Pomakni se na poziciju 20. Usporedi
his" s "podniskom". Nema podudaranja. - Pomaknite se na poziciju 21. Usporedite
is ts "podniskom". Nema podudaranja. - Pomaknite se na poziciju 22. Usporedite
s tes "podniskom". Nema podudaranja. - Pomaknite se na poziciju 23. Usporedite
ubsts "podniskom". Nema podudaranja. - Pomaknite se na poziciju 24. Usporedite
bstrs "podniskom". Nema podudaranja. - Pomaknite se na poziciju 25. Usporedite
stres "podniskom". Nema podudaranja. - Pomaknite se na poziciju 26. Usporedite
trins "podniskom". Nema podudaranja. - Pomaknite se na poziciju 27. Usporedite
rings "podniskom". Podudaranje pronađeno, rekordna pozicija 27.
Podniz "substring" nalazi se na poziciji 27 unutar teksta.
Primjer koda u 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;
}
U ovom primjeru, textSearch funkcija se koristi za pronalaženje položaja podniza "substring" unutar teksta. Rezultat će biti vektor koji sadrži početne pozicije utakmica.

