Переставьте слова в строке, не меняя порядок

Научитесь менять местами слова в строке Java так, чтобы каждое слово оставалось в своем порядке, а символы в словах менялись местами, используя Java 8 Stream API и классы StringUtils.

Оригинальная строка – «Алекс Брайан Чарльз»

Перевернутые слова – «xela nairb selrahc»

1. Использование Stream и StringBuilder

Алгоритм переворачивания каждого слова прост:

  • Токенизируйте строку с помощью метода String.split().
  • Пройдитесь по массиву строк с помощью Stream и используйте метод StringBuilder.reverse(), чтобы перевернуть каждое слово.
  • Объедините все перевернутые слова, объединив элементы Stream.
String input = "alex brian charles";String reversed = Arrays.stream(input.split(" ")).map(word -> new StringBuilder(word).reverse()).collect(Collectors.joining(" "));System.out.println(reversed);

Вывод программы.

xela nairb selrahc

2. Использование StringUtils

Класс StringUtils из библиотеки Apache command lang3. Его API reverseDelimited() переворачивает каждое слово и объединяет строку обратно с тем же разделителем. В нашем случае мы будем использовать пробел в качестве разделителя.

String input = "alex brian charles";String reversed = StringUtils.reverseDelimited(StringUtils.reverse(input), ' ');System.out.println(reversed);

Вывод программы.

xela nairb selrahc

В этом посте мы научились переставлять слова в предложении на Java.

Исходный код на Github

Прокрутить вверх