Het tekstzoekalgoritme is een fundamentele methode bij het verwerken van tekst en het ophalen van informatie. Met dit algoritme kunnen we voorkomens van een subtekenreeks(of patroon) binnen een groter stuk tekst lokaliseren en identificeren.
Hoe het werkt
- Begin met een groter stuk tekst(of document) en een substring om naar te zoeken.
- Doorloop elk teken van de tekst opeenvolgend.
- Vergelijk de subtekenreeks met een deel van de tekst dat dezelfde lengte heeft als de subtekenreeks. Als er een overeenkomst is gevonden, noteert u de huidige positie.
- Ga naar de volgende positie en ga verder met de vergelijking.
Voorbeeld
Beschouw de tekst: "Laten we zoeken naar een subtekenreeks in deze tekst om te zien hoe het algoritme werkt."
En de substring om naar te zoeken: "substring"
- Begin op positie 0. Vergelijk
Let'met "substring". Geen match. - Ga naar positie 1. Vergelijk
et'smet "substring". Geen match. - Ga naar positie 2. Vergelijk
t's" met "subtekenreeks". Geen overeenkomst. - Ga naar positie 3. Vergelijk
's smet "substring". Geen match. - Ga naar positie 4. Vergelijk
semet "substring". Geen match. - Ga naar positie 5. Vergelijk
seamet "substring". Geen match. - Ga naar positie 6. Vergelijk
earcmet "substring". Geen match. - Ga naar positie 7. Vergelijk
archmet "substring". Geen match. - Ga naar positie 8. Vergelijk
rch" met "subtekenreeks". Geen overeenkomst. - Ga naar positie 9. Vergelijk
ch wmet "substring". Geen match. - Ga naar positie 10. Vergelijk
h wimet "substring". Geen match. - Ga naar positie 11. Vergelijk "
witmet "subtekenreeks". Geen overeenkomst. - Ga naar positie 12. Vergelijk
withmet "substring". Geen match. - Ga naar positie 13. Vergelijk
ithimet "substring". Geen match. - Ga naar positie 14. Vergelijk
thinmet "substring". Geen match. - Ga naar positie 15. Vergelijk
hinnmet "substring". Geen match. - Ga naar positie 16. Vergelijk
in tmet "substring". Geen match. - Ga naar positie 17. Vergelijk
n thmet "substring". Geen match. - Ga naar positie 18. Vergelijk "
thimet "subtekenreeks". Geen overeenkomst. - Ga naar positie 19. Vergelijk
thismet "substring". Geen match. - Ga naar positie 20. Vergelijk
his" met "subtekenreeks". Geen overeenkomst. - Ga naar positie 21. Vergelijk
is tmet "substring". Geen match. - Ga naar positie 22. Vergelijk
s temet "substring". Geen match. - Ga naar positie 23. Vergelijk
ubstmet "substring". Geen match. - Ga naar positie 24. Vergelijk
bstrmet "substring". Geen match. - Ga naar positie 25. Vergelijk
stremet "substring". Geen match. - Ga naar positie 26. Vergelijk
trinmet "substring". Geen match. - Ga naar positie 27. Vergelijk
ringmet "substring". Match gevonden, recordpositie 27.
De subtekenreeks "subtekenreeks" bevindt zich op positie 27 in de tekst.
Voorbeeldcode in 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;
}
In dit voorbeeld textSearch wordt de functie gebruikt om de posities van de subtekenreeks "subtekenreeks" in de tekst te vinden. Het resultaat is een vector met daarin de startposities van de wedstrijden.

