Как составить более элегантный алгоритм обхода строки по индексам?
В тексте, при помощи суффиксного массива выделил индексы, в данной момент мой алгоритм обхода выглядит так, уверен,что имеются более элегантные версии при помощи классических алгоритмнов.
str := `Уж небо осенью дышало Уж реже солнышко блистало`
buff := bytes.Buffer{}
buff.WriteString(str)
searchIndex := []byte("Уж")
index := suffixarray.New(buff.Bytes())
offset := index.Lookup(searchIndex, -1)
sort.Ints(offset)
l := len(offset)
sliceOfBytes := make([][]byte, l)
for iter := 0; l > 0; iter++ {
if l == 1 {
sliceOfBytes[iter] = buff.Next(offset[len(offset)-1])
break
}
sliceOfBytes[iter] = buff.Next(offset[iter+1] - offset[iter])
l--
}
for _, s := range sliceOfBytes {
fmt.Println(string(s))
}
//Уж небо осенью дышало
//Уж реже солнышко блистало