Generation

generate functionFri, 17 Oct 2025

Implementar un algoritmo de búsqueda de texto en un arreglo de cadenas.

Aquí te muestro un ejemplo de cómo implementar un algoritmo de búsqueda de texto en un arreglo de cadenas en Go: ```go package main import ( "fmt" "strings" ) // BuscarTexto busca un texto en un arreglo de cadenas func BuscarTexto(arr []string, texto string) (int, bool) { for i, cadena := range arr { if strings.Contains(cadena, texto) { return i, true } } return -1, false } func main() { arr := []string{"Hola mundo", "Este es un ejemplo", "Búsqueda de texto"} texto := "texto" resultado, encontrado := BuscarTexto(arr, texto) if encontrado { fmt.Printf("El texto '%s' se encuentra en la posición %d\n", texto, resultado) } else { fmt.Printf("El texto '%s' no se encuentra en el arreglo\n", texto) } } ``` En este ejemplo, la función `BuscarTexto` recibe un arreglo de cadenas y un texto a buscar. La función utiliza el método `strings.Contains` para verificar si el texto se encuentra en cada cadena del arreglo. Si se encuentra, devuelve la posición del arreglo y un valor `true` para indicar que se encontró el texto. Si no se encuentra, devuelve -1 y un valor `false`. En el `main`, se crea un arreglo de cadenas y se busca un texto en él. Si se encuentra, se imprime la posición del arreglo donde se encontró el texto. Si no se encuentra, se imprime un mensaje indicando que el texto no se encuentra en el arreglo. También puedes utilizar el algoritmo de búsqueda de texto con un enfoque más eficiente, como el algoritmo de Knuth-Morris-Pratt (KMP), que tiene una complejidad de tiempo de O(n+m) en lugar de O(n*m) del método `strings.Contains`. Aquí te muestro un ejemplo de cómo implementar el algoritmo KMP en Go: ```go package main import ( "fmt" ) // Preprocesar crea la tabla de preprocesamiento para el algoritmo KMP func Preprocesar(texto string) []int { longitud := len(texto) tabla := make([]int, longitud) j := 0 for i := 1; i < longitud; i++ { for j > 0 && texto[i] != texto[j] { j = tabla[j-1] } if texto[i] == texto[j] { j++ } tabla[i] = j } return tabla } // BuscarTextoKMP busca un texto en un arreglo de cadenas utilizando el algoritmo KMP func BuscarTextoKMP(arr []string, texto string) (int, bool) { tabla := Preprocesar(texto) for _, cadena := range arr { j := 0 for i := 0; i < len(cadena); i++ { for j > 0 && cadena[i] != texto[j] { j = tabla[j-1] } if cadena[i] == texto[j] { j++ } if j == len(texto) { return i - j + 1, true } } } return -1, false } func main() { arr := []string{"Hola mundo", "Este es un ejemplo", "Búsqueda de texto"} texto := "texto" resultado, encontrado := BuscarTextoKMP(arr, texto) if encontrado { fmt.Printf("El texto '%s' se encuentra en la posición %d\n", texto, resultado) } else { fmt.Printf("El texto '%s' no se encuentra en el arreglo\n", texto) } } ``` En este ejemplo, la función `Preprocesar` crea la tabla de preprocesamiento para el algoritmo KMP. La función `BuscarTextoKMP` utiliza la tabla de preprocesamiento para buscar el texto en cada cadena del arreglo. Si se encuentra, devuelve la posición del arreglo y un valor `true` para indicar que se encontró el texto. Si no se encuentra, devuelve -1 y un valor `false`.

Want to kickstart your project?Use the new AI Studio to create your code