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's
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 2. Confronta
t's
" con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 3. Confronta
's s
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 4. Confronta
se
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 5. Confronta
sea
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 6. Confronta
earc
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 7. Confronta
arch
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 8. Confronta
rch
" con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 9. Confronta
ch w
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 10. Confronta
h wi
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 11. Confronta "
wit
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 12. Confronta
with
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 13. Confronta
ithi
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 14. Confronta
thin
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 15. Confronta
hinn
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 16. Confronta
in t
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 17. Confronta
n th
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 18. Confronta "
thi
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 19. Confronta
this
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 20. Confronta
his
" con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 21. Confronta
is t
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 22. Confronta
s te
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 23. Confronta
ubst
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 24. Confronta
bstr
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 25. Confronta
stre
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 26. Confronta
trin
con "sottostringa". Nessuna corrispondenza. - Passa alla posizione 27. Confronta
ring
con "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.