@calculator212

Как ускорить поиск нескольких подстрок в строке в го?

Если немного упростить, то есть довольно большой массив текстовых данных и в нём нужно проверить наличие определённых подстрок, если имеется 2-3 подстроки, то это в целом всё работает довольно довольно быстро. Но на реальных данных где нужно искать 200-300 подстрок всё работает сильно медленнее. Есть ли способ ускорить обработку данных? На данный момент я просто итерируюсь по массиву подстрок и проверяю наличие каждой подстроки при помощи strings.Contains.
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
Скорее всего, нужен "алгоритм Ахо-Корасик".
Если его нет из коробки в Go, то можно запилить самостоятельно: ссылка, ссылка, ссылка
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
i229194964
@i229194964
Веб разработчик
package main

import (
	"fmt"
	"strings"
)

func main() {
	text := "Это пример текста, в котором нужно проверить наличие нескольких подстрок."
	substrings := []string{"пример", "нужно", "подстрок"}

	// Собираем все подстроки в регулярную строку, разделенную символами "|"
	regexStr := strings.Join(substrings, "|")

	// Создаем регулярное выражение из строки
	regex := regexp.MustCompile(regexStr)

	// Ищем все совпадения регулярного выражения в тексте
	matches := regex.FindAllString(text, -1)

	// Выводим результаты
	for _, match := range matches {
		fmt.Println("Найдено:", match)
	}
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы