Algoritem iskanja po besedilu je temeljna metoda pri obdelavi besedila in iskanju informacij. Ta algoritem nam omogoča, da poiščemo in identificiramo pojavitve podniza(ali vzorca) znotraj večjega dela besedila.
Kako deluje
- Začnite z večjim delom besedila(ali dokumenta) in podnizom za iskanje.
- Zaporedoma preletite vsak znak besedila.
- Primerjajte podniz z delom besedila, ki ima enako dolžino kot podniz. Če se najde ujemanje, zabeležite trenutni položaj.
- Premaknite se na naslednji položaj in nadaljujte s primerjavo.
Primer
Razmislite o besedilu: "Poiščimo podniz v tem besedilu, da vidimo, kako deluje algoritem."
In podniz za iskanje: "substring"
- Začnite na položaju 0. Primerjajte
Let's "podnizom". Ni ujemanj. - Premakni se na položaj 1. Primerjaj
et'ss "podnizom". Ni ujemanj. - Premakni se na položaj 2. Primerjaj
t's" s "podnizom". Ni ujemanja. - Premakni se na položaj 3. Primerjaj
's ss "podnizom". Ni ujemanj. - Premakni se na položaj 4. Primerjaj
ses "podnizom". Ni ujemanj. - Premakni se na položaj 5. Primerjaj
seas "podnizom". Ni ujemanj. - Premakni se na položaj 6. Primerjaj
earcs "podnizom". Ni ujemanj. - Premakni se na položaj 7. Primerjaj
archs "podnizom". Ni ujemanj. - Premakni se na položaj 8. Primerjaj
rch" s "podnizom". Ni ujemanja. - Premakni se na položaj 9. Primerjaj
ch ws "podnizom". Ni ujemanj. - Premakni se na položaj 10. Primerjaj
h wis "podnizom". Ni ujemanj. - Premakni se na položaj 11. Primerjaj "
wits "podnizom". Ni ujemanja. - Premakni se na položaj 12. Primerjaj
withs "podnizom". Ni ujemanj. - Premakni se na položaj 13. Primerjaj
ithis "podnizom". Ni ujemanj. - Premakni se na položaj 14. Primerjaj
thins "podnizom". Ni ujemanj. - Premakni se na položaj 15. Primerjaj
hinns "podnizom". Ni ujemanj. - Premakni se na položaj 16. Primerjaj
in ts "podnizom". Ni ujemanj. - Premakni se na položaj 17. Primerjaj
n ths "podnizom". Ni ujemanj. - Premakni se na položaj 18. Primerjaj "
this "podnizom". Ni ujemanja. - Premakni se na položaj 19. Primerjaj
thiss "podnizom". Ni ujemanj. - Premakni se na položaj 20. Primerjaj
his" s "podnizom". Ni ujemanja. - Premakni se na položaj 21. Primerjaj
is ts "podnizom". Ni ujemanj. - Premakni se na položaj 22. Primerjaj
s tes "podnizom". Ni ujemanj. - Premakni se na položaj 23. Primerjaj
ubsts "podnizom". Ni ujemanj. - Premakni se na položaj 24. Primerjaj
bstrs "podnizom". Ni ujemanj. - Premakni se na položaj 25. Primerjaj
stres "podnizom". Ni ujemanj. - Premakni se na položaj 26. Primerjaj
trins "podnizom". Ni ujemanj. - Premakni se na položaj 27. Primerjaj
rings "podnizom". Ujemanje najdeno, rekordno mesto 27.
Podniz "substring" se nahaja na mestu 27 znotraj besedila.
Primer kode v 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;
}
V tem primeru textSearch se funkcija uporablja za iskanje položajev podniza "substring" v besedilu. Rezultat bo vektor, ki vsebuje začetne položaje tekem.

