Решение
fun reverseWords(s: String): String {
val chars = s.toCharArray()
var start = 0
// Вспомогательная функция для переворота части массива символов
fun reverse(start: Int, end: Int) {
var left = start
var right = end
// Переворачиваем подстроку от left до right
while (left < right) {
// Меняем местами символы
val temp = chars[left]
chars[left] = chars[right]
chars[right] = temp
left++
right--
}
}
// Проходим по всей строке
for (i in chars.indices) {
// Если встречаем пробел или достигли конца строки
if (chars[i] == ' ' || i == chars.size - 1) {
// Определяем конец текущего слова
val end = if (chars[i] == ' ') i - 1 else i
// Переворачиваем текущее слово
reverse(start, end)
// Устанавливаем начало следующего слова
start = i + 1
}
}
// Преобразуем измененный массив символов обратно в строку
return String(chars)
}