func normalize2(str []rune) []rune {

В представленном коде на Go есть несколько ошибок и недочётов. Основная идея функции — нормализовать срез рун, удаляя лишние пробелы и сжимая последовательности пробелов до одного.

Короткий ответ

Что ответить на собеседовании

В представленном коде на Go есть несколько ошибок и недочётов. Основная идея функции — нормализовать срез рун, удаляя лишние пробелы и сжимая последовательности пробелов до одного.

Подробный разбор

Ответ с пояснениями

Условие

func normalize2(str []rune) []rune {

result := str[:0]
for val := range str {
    if val != ' ' {
        result = append(re)
    }
}

l, r := 0, 0
isSpace := false

for i := 0, i < len(str); i++ {
    val := string(str[i])
    if val == " " {
        if isSpace {
            continue
        } else {
            str[r] = val
            r++
            isSpace = true
        }
    } else {
        str[r] = val
        r++
        isSpace = false
    }
}

return str[:r]

}

Ответ

В представленном коде на Go есть несколько ошибок и недочётов. Основная идея функции — нормализовать срез рун, удаляя лишние пробелы и сжимая последовательности пробелов до одного.

Исправленный и упрощённый вариант функции, который:

  • Удаляет ведущие и конечные пробелы
  • Заменяет последовательности пробелов одним пробелом
func normalize2(str []rune) []rune {
    r := 0
    isSpace := false

    for _, val := range str {
        if val == ' ' {
            if !isSpace {
                str[r] = val
                r++
                isSpace = true
            }
        } else {
            str[r] = val
            r++
            isSpace = false
        }
    }

    // Удаляем пробел в конце, если он есть
    if r > 0 && str[r-1] == ' ' {
        r--
    }

    return str[:r]
}

Объяснение:

  • Переменная r — индекс для записи в результирующий срез.
  • Флаг isSpace отслеживает, был ли предыдущий символ пробелом, чтобы не добавлять несколько подряд.
  • В конце проверяем, не остался ли пробел в конце, и удаляем его.

Такой подход позволяет эффективно нормализовать строку без выделения дополнительной памяти.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее