Сложность: medium
Дан массив символов s, переверните порядок слов.
Слово определяется как последовательность символов, не являющихся пробелами. Слова в s будут разделены одним пробелом.
Ваш код должен решать задачу на месте, то есть без выделения дополнительного пространства.
Пример:
Input: s = ["a"]
Output: ["a"]
👨💻 Алгоритм:
1⃣Перевернуть всю строку: применить функцию reverse, которая переворачивает весь массив символов от начала до конца.
2⃣Перевернуть каждое слово: пройти по всей строке, идентифицировать границы каждого слова и использовать функцию reverse для переворачивания символов в пределах каждого слова.
3⃣Окончательная корректировка: проверить, чтобы между словами оставался только один пробел, и удалить лишние пробелы в начале и конце строки, если это необходимо.
😎 Решение:
class Solution {
func reverseWords(_ s: inout [Character]) {
s.reverse()
var start = 0
let n = s.count
var end = 0
while start < n {
while end < n && s[end] != " " {
end += 1
}
s[start..<end].reverse()
end += 1
start = end
}
}
}Ставь 👍 и забирай 📚 Базу знаний