L'algoritmo di ricerca del testo è un metodo fondamentale nell'elaborazione del testo e nel recupero delle informazioni. Questo algoritmo ci consente di individuare e identificare le occorrenze di una sottostringa(o modello) all'interno di una parte di testo più ampia.
Come funziona
- Inizia con una parte di testo(o documento) più grande e una sottostringa da cercare.
- Itera attraverso ogni carattere del testo in sequenza.
- Confronta la sottostringa con una parte del testo che ha la stessa lunghezza della sottostringa. Se viene trovata una corrispondenza, registrare la posizione corrente.
- Passa alla posizione successiva e continua il confronto.
Esempio
Considera il testo: "Cerchiamo una sottostringa all'interno di questo testo per vedere come funziona l'algoritmo".
E la sottostringa da cercare: "sottostringa"
- Inizia dalla posizione 0. Confronta
Let'con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 1. Confronta
et'scon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 2. Confronta
t's" con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 3. Confronta
's scon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 4. Confronta
secon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 5. Confronta
seacon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 6. Confronta
earccon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 7. Confronta
archcon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 8. Confronta
rch" con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 9. Confronta
ch wcon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 10. Confronta
h wicon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 11. Confronta "
witcon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 12. Confronta
withcon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 13. Confronta
ithicon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 14. Confronta
thincon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 15. Confronta
hinncon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 16. Confronta
in tcon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 17. Confronta
n thcon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 18. Confronta "
thicon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 19. Confronta
thiscon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 20. Confronta
his" con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 21. Confronta
is tcon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 22. Confronta
s tecon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 23. Confronta
ubstcon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 24. Confronta
bstrcon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 25. Confronta
strecon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 26. Confronta
trincon "sottostringa". Nessuna corrispondenza. - Passa alla posizione 27. Confronta
ringcon "sottostringa". Partita trovata, posizione record 27.
La sottostringa "substring" si trova alla posizione 27 all'interno del testo.
Esempio di codice 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 questo esempio, la textSearch funzione viene utilizzata per trovare le posizioni della sottostringa "sottostringa" all'interno del testo. Il risultato sarà un vettore contenente le posizioni di partenza delle partite.

