(код без описания)
Условие
Заголовок раздела «Условие»(код без описания)
/*
- Написать функцию, которая заменит все пробелы в строке на "%20 "inplace.- На вход подается слайс с зарезервированными под расширение символами.- Пример:- input: ['g','o','','t','a','s','k','\x00 ','\x00 ']- output: ['g','o','%','2','0','t','a','s','k']- <p >_ Ограничения: O(1) по памяти, O(N) по времени. _/ func urlEncodeSpaces(input []rune) { // TODO: }
func testUrlEncodeSpaces(name string, input, expected []rune) {urlEncodeSpaces(input)passed := slicesEqualRunes(input, expected)fmt.Printf("Тест: %s\n ", name)fmt.Printf("Ожидаемый результат: %q\n ", string(expected))fmt.Printf("Полученный результат: %q\n ", string(input))if passed {fmt.Println("✅ ПРОЙДЕН ")} else {fmt.Println("❌ НЕ ПРОЙДЕН ")}fmt.Println()}
func slicesEqualRunes(a, b []rune) bool {if len(a) != len(b) {return false}for i := range a {if a[i] != b[i] {return false}}return true}
func main() {fmt.Println("Запуск тестов:")fmt.Println(strings.Repeat("=", 50))testCases := []struct {name stringinput []runeexpected []rune}{{name: "Пример из условия ",input: []rune{'g', 'o', '','t ','a ','s ','k ','\x00 ','\x00 '},expected: []rune{'g', 'o', '%','2 ','0 ','t ','a ','s ','k '},},{name: "Несколько пробелов ",input: []rune{'a', '','b ','','c ','\x00 ','\x00 ','\x00 ','\x00 '},expected: []rune{'a', '%','2 ','0 ','b ','%','2 ','0 ','c '},},{name: "Без пробелов ",input: []rune{'n', 'o', 's', 'p', 'a', 'c', 'e', 's'},expected: []rune{'n', 'o', 's', 'p', 'a', 'c', 'e', 's'},},{name: "Пробел в начале ",input: []rune{'','a ','b ','c ','\x00 ','\x00 '},expected: []rune{'%','2 ','0 ','a ','b ','c '},},{name: "Пробел в конце ",input: []rune{'a', 'b', 'c', '','\x00 ','\x00 '},expected: []rune{'a', 'b', 'c', '%','2 ','0 '},},{name: "Только пробел ",input: []rune{'','\x00 ','\x00 '},expected: []rune{'%','2 ','0 '},},}for \_, tc := range testCases {in := make([]rune, len(tc.input))copy(in, tc.input)testUrlEncodeSpaces(tc.name, in, tc.expected)}}Решение
Заголовок раздела «Решение»Источник: VK / ВК (ВКонтакте) - 2 · 4 кв 2025