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