Заменить все пробелы в слайсе рун на %20, работая на месте. В конце
слайса заранее зарезервированы пустые позиции (нулевые руны) ровно под
расширение: по две на каждый пробел.
func PadSpaces(buf []rune)
Требования
- Текст занимает начало
buf, за ним — 2·k нулевых рун, где k — число
пробелов в тексте. После вызова весь buf содержит текст с заменой
' ' → '%', '2', '0'.
- O(n) по времени, O(1) дополнительной памяти, ни одной аллокации.
- Любые руны кроме пробела (включая кириллицу и эмодзи) переносятся как есть.
- Пустой
buf, текст без пробелов, текст из одних пробелов, пробелы в начале и
в конце — корректны.
Пример
buf := []rune("my page title 9\x00\x00\x00\x00\x00\x00")
PadSpaces(buf)
fmt.Println(string(buf)) // my%20page%20title%209
Устно: почему идти нужно с конца, а не с начала? Как найти конец текста,
не получая его длину параметром?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.