Напиши функцию, которая разбивает строку v по подстроке sub. Поведение
должно совпадать с strings.Split.
func partition(v, sub string) []string
Требования
- Результат совпадает с
strings.Split(v, sub) на любых входах, включая края:
- разделитель в начале, в конце, несколько подряд — дают пустые элементы;
- разделителя в строке нет →
[]string{v};
- пустая
v при непустом sub → []string{""};
- пустой
sub → строка режется на символы UTF-8 (не на байты!);
partition("", "") → пустой срез.
- Пакеты
strings и bytes не импортировать.
- Элементы результата — подстроки
v, без копирования байтов.
Пример
partition("a,b,,c", ",") // ["a" "b" "" "c"]
partition("a--b--", "--") // ["a" "b" ""]
partition("aaa", "aa") // ["" "a"]
partition("привет", "") // ["п" "р" "и" "в" "е" "т"]
Устно: какая сложность у наивного поиска подстроки? Что использует
strings.Index для длинных разделителей?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.