Разбейте очищенную строку по одному или нескольким пробельным символам, переверните список слов и соедините одним пробелом. Пустую строку обработайте отдельно.
Инвертировать порядок слов в предложении
Разбейте очищенную строку по одному или нескольким пробельным символам, переверните список слов и соедините одним пробелом. Пустую строку обработайте отдельно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дана строка input. Необходимо вернуть новую строку, в которой последовательность слов будет расположена в обратном порядке. Между словами допускается лишь один пробел, а любые начальные и конечные пробелы следует убрать.
class Solution {
public String reverseWords(String input) {
// TODO
}
}
Ответ
Разбейте очищенную строку по одному или нескольким пробельным символам, переверните список слов и соедините одним пробелом. Пустую строку обработайте отдельно.
public String reverseWords(String input) {
String normalized = java.util.Objects.requireNonNull(input).trim();
if (normalized.isEmpty()) return "";
java.util.List<String> words = java.util.Arrays.asList(normalized.split("\\s+"));
java.util.Collections.reverse(words);
return String.join(" ", words);
}
Время и дополнительная память O(n). Порядок символов внутри слов не меняется. Здесь используются стандартные пробельные правила trim и regex; если требуется специальная Unicode-нормализация пробелов, её нужно согласовать отдельно.