Дана входная строка s, необходимо изменить порядок слов в строке на противоположный.
Слово определяется как последовательность символов, не содержащих пробелов. Слова в s будут разделены как минимум одним пробелом.
Вернуть строку, состоящую из слов в обратном порядке, объединенных одним пробелом.
*s может содержать начальные или конечные пробелы, а также несколько пробелов между двумя словами. Возвращаемая строка должна содержать только один пробел, разделяющий слова.
Способ решения:
- Определяем два указателя (left, right) на первый и последний символы без пробела.
- Начинаем обход слева направо. Когда получаем пробел, проверяем, был ли символ перед ним пробелом или нет. Если да, игнорируем его и продолжаем. Иначе добавим текущее слово (temp) перед текущим ответом (ans = temp + " " + ans)
- Как только дойдем до конца (left == right), добавляем последнее слово перед ответом аналогично с предыдущим пунктом.
- Стираем последний пробел в ответе (ans.erase(ans.begin() + ans.length() - 1);)
#разбор_кода
Post #1477
2.48K
