Проверка, содержит ли строка подстроку, содержащуюся в срезе в Go - PullRequest
0 голосов
/ 30 января 2019

У меня есть массив подстрок и кусочек строк.Я хочу проверить, содержит ли строка какую-либо из подстрок в срезе mySliceOfSubstrings.

mySliceOfSubstrings := []string{"hello", "world"}
mySliceOfStringsToCheck := []string{"hello mars", "hey mars"}

Есть ли лучший способ сделать это, как показано ниже, чтобы поместить цикл внутри цикла?

for _, string := range mySliceOfStringsToCheck {

     for _, substring := range mySliceOfSubstrings {
          result := strings.Contains(string, substring)

     }  

}

Что если я захочу проверить строку по двум различным фрагментам подстрок?

1 Ответ

0 голосов
/ 30 января 2019

Если размер данных не очень велик, и вы ищете алгоритмические улучшения по сравнению с имеющимся у вас решением O (N ^ 2), ваш код в порядке.

Для очень больших данных вы могли бы рассмотретьиспользуя некоторые более сложные структуры данных.Например, в Go есть пакет https://golang.org/pkg/index/suffixarray, который позволит вам проверить фрагмент строки, предварительно обработать его, а затем выполнить поиск подстрок в логарифмическом времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...