Преобразуйте строку в []rune и замените элемент с индексом 3. Для строки «привет» результат будет «приЫет».
Подмена четвертого символа строки на букву 'Ы'
Преобразуйте строку в []rune и замените элемент с индексом 3. Для строки «привет» результат будет «приЫет».
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо реализовать функцию, которая принимает строку (например, "привет"), заменяет её четвертый символ на русскую букву 'Ы' и корректно обрабатывает случаи, когда длина строки меньше четырёх символов, возвращая исходную строку без изменений.
Ответ
Преобразуйте строку в []rune и замените элемент с индексом 3. Для строки «привет» результат будет «приЫет».
Индексирование string работает с байтами, поэтому для кириллицы нельзя просто заменить четвёртый байт.
func replaceFourth(s string) string {
chars := []rune(s)
if len(chars) < 4 {
return s
}
chars[3] = 'Ы'
return string(chars)
}
Время и память — O(n). Здесь символом считается кодовая точка Unicode: составные эмодзи и буквы с отдельными комбинируемыми знаками могут занимать несколько рун. Для пользовательских графем нужен другой способ сегментации.