Teksto paieškos algoritmas yra pagrindinis teksto apdorojimo ir informacijos gavimo metodas. Šis algoritmas leidžia mums rasti ir nustatyti poeilutės(arba šablono) atvejus didesnėje teksto dalyje.
Kaip tai veikia
- Pradėkite nuo didesnės teksto dalies(arba dokumento) ir ieškomos poeilutės.
- Pakartokite kiekvieną teksto simbolį iš eilės.
- Palyginkite eilutę su teksto dalimi, kurios ilgis yra toks pat, kaip ir poeilutė. Jei randama atitiktis, užrašykite dabartinę padėtį.
- Pereikite į kitą poziciją ir tęskite palyginimą.
Pavyzdys
Apsvarstykite tekstą: „Ieškokime poeilutės šiame tekste, kad pamatytume, kaip veikia algoritmas“.
Ir poeilutė, kurios reikia ieškoti: "substring"
- Pradėkite nuo 0 pozicijos. Palyginkite
Let'su "substyle". Jokio atitikmens. - Perkelkite į 1 padėtį. Palyginkite
et'ssu „substyle“. Jokio atitikmens. - Perkelkite į 2 padėtį. Palyginkite
t's" su "substyling". Nėra atitikties. - Perkelkite į 3 padėtį. Palyginkite
's ssu „substyle“. Jokio atitikmens. - Perkelkite į 4 poziciją. Palyginkite
sesu "substyle". Jokio atitikmens. - Perkelkite į 5 padėtį. Palyginkite
seasu "substyle". Jokio atitikmens. - Perkelkite į 6 poziciją. Palyginkite
earcsu „substyle“. Jokio atitikmens. - Perkelkite į 7 poziciją. Palyginkite
archsu "substyle". Jokio atitikmens. - Perkelkite į 8 poziciją. Palyginkite
rch" su "substyling". Atitikties nėra. - Perkelkite į 9 poziciją. Palyginkite
ch wsu "substyle". Jokio atitikmens. - Perkelkite į 10 padėtį. Palyginkite
h wisu „substyle“. Jokio atitikmens. - Perkelkite į 11 poziciją. Palyginkite "
witsu "substyling". Atitikties nėra. - Perkelkite į 12 poziciją. Palyginkite
withsu "substyle". Jokio atitikmens. - Perkelkite į 13 padėtį. Palyginkite
ithisu "substyle". Jokio atitikmens. - Perkelkite į 14 poziciją. Palyginkite
thinsu "substyle". Jokio atitikmens. - Perkelkite į 15 poziciją. Palyginkite
hinnsu "substyle". Jokio atitikmens. - Perkelkite į 16 poziciją. Palyginkite
in tsu "substyle". Jokio atitikmens. - Perkelkite į 17 poziciją. Palyginkite
n thsu "substyle". Jokio atitikmens. - Perkelkite į 18 poziciją. Palyginkite "
thisu "substyling". Atitikties nėra. - Perkelkite į 19 poziciją. Palyginkite
thissu "substyle". Jokio atitikmens. - Perkelkite į 20 poziciją. Palyginkite
his" su "substyling". Nėra atitikties. - Perkelkite į 21 poziciją. Palyginkite
is tsu "substyle". Jokio atitikmens. - Perkelkite į 22 poziciją. Palyginkite
s tesu "substyle". Jokio atitikmens. - Perkelkite į 23 poziciją. Palyginkite
ubstsu "substyle". Jokio atitikmens. - Perkelkite į 24 poziciją. Palyginkite
bstrsu "substyle". Jokio atitikmens. - Perkelkite į 25 poziciją. Palyginkite
stresu "substyle". Jokio atitikmens. - Perkelkite į 26 poziciją. Palyginkite
trinsu "substyle". Jokio atitikmens. - Perkelkite į 27 poziciją. Palyginkite
ringsu "substyle". Rungtynės rastas, rekordinė 27 vieta.
Poeilutė „poeilutė“ yra 27 teksto pozicijoje.
Kodo pavyzdys 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;
}
Šiame pavyzdyje textSearch funkcija naudojama norint rasti poeilutės „substyling“ vietas tekste. Rezultatas bus vektorius, kuriame yra rungtynių pradinės pozicijos.

