El algoritmo de búsqueda de texto es un método fundamental en el procesamiento de texto y la recuperación de información. Este algoritmo nos permite ubicar e identificar ocurrencias de una subcadena(o patrón) dentro de un texto más grande.
Cómo funciona
- Comience con un fragmento de texto(o documento) más grande y una subcadena para buscar.
- Iterar a través de cada carácter del texto secuencialmente.
- Compare la subcadena con una parte del texto que tenga la misma longitud que la subcadena. Si se encuentra una coincidencia, registre la posición actual.
- Muévase a la siguiente posición y continúe la comparación.
Ejemplo
Considere el texto: "Busquemos una subcadena dentro de este texto para ver cómo funciona el algoritmo".
Y la subcadena a buscar: "subcadena"
- Comience en la posición 0. Compare
Let'con "subcadena". Sin coincidencia. - Mover a la posición 1. Comparar
et'scon "subcadena". Sin coincidencia. - Mover a la posición 2. Comparar
t's" con "subcadena". No hay coincidencia. - Mover a la posición 3. Comparar
's scon "subcadena". Sin coincidencia. - Mover a la posición 4. Comparar
secon "subcadena". Sin coincidencia. - Mover a la posición 5. Comparar
seacon "subcadena". Sin coincidencia. - Mover a la posición 6. Comparar
earccon "subcadena". Sin coincidencia. - Mover a la posición 7. Comparar
archcon "subcadena". Sin coincidencia. - Mover a la posición 8. Comparar
rch" con "subcadena". No hay coincidencia. - Mover a la posición 9. Comparar
ch wcon "subcadena". Sin coincidencia. - Mover a la posición 10. Comparar
h wicon "subcadena". Sin coincidencia. - Mover a la posición 11. Comparar "
witcon "subcadena". No hay coincidencia. - Mover a la posición 12. Comparar
withcon "subcadena". Sin coincidencia. - Mover a la posición 13. Comparar
ithicon "subcadena". Sin coincidencia. - Mover a la posición 14. Comparar
thincon "subcadena". Sin coincidencia. - Mover a la posición 15. Comparar
hinncon "subcadena". Sin coincidencia. - Mover a la posición 16. Comparar
in tcon "subcadena". Sin coincidencia. - Mover a la posición 17. Comparar
n thcon "subcadena". Sin coincidencia. - Mover a la posición 18. Comparar "
thicon "subcadena". No hay coincidencia. - Mover a la posición 19. Comparar
thiscon "subcadena". Sin coincidencia. - Mover a la posición 20. Comparar
his" con "subcadena". No hay coincidencia. - Mover a la posición 21. Comparar
is tcon "subcadena". Sin coincidencia. - Mover a la posición 22. Comparar
s tecon "subcadena". Sin coincidencia. - Mover a la posición 23. Comparar
ubstcon "subcadena". Sin coincidencia. - Mover a la posición 24. Comparar
bstrcon "subcadena". Sin coincidencia. - Mover a la posición 25. Comparar
strecon "subcadena". Sin coincidencia. - Mover a la posición 26. Comparar
trincon "subcadena". Sin coincidencia. - Mover a la posición 27. Comparar
ringcon "subcadena". Coincidencia encontrada, posición de registro 27.
La subcadena "subcadena" se encuentra en la posición 27 dentro del texto.
Código de ejemplo en 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;
}
En este ejemplo, la textSearch función se usa para encontrar las posiciones de la subcadena "subcadena" dentro del texto. El resultado será un vector que contiene las posiciones iniciales de los partidos.

