Перевернуть все слова строки
Необходимо перевернуть каждое слово в вводимой пользователем строке, например Привет Мир ⇒ тевирП риМ. Я попытался написать метод для этого, но он лишь переворачивает первое слово. Как я могу это исправить?
public class MyString {
public static String ReverseString(String string) {
char[] array = string.toCharArray();
int i = 0, j = array.length - 1;
while (i < j) {
char t = array[i];
array[i] = array[j];
array[j] = t;
i++;
j--;
}
return String.valueOf(array);
}
}
Ответы (2 шт):
Автор решения: Николай Гнап
→ Ссылка
Вот рабочий код:
String str3 = "java";
String[] words = new StringBuilder(str3).reverse().toString().split(" ");
StringBuilder newStr = new StringBuilder();
for (int i = words.length - 1; i >= 0; i--)
newStr.append(words[i]).append("");
System.out.println(newStr);
Автор решения: user
→ Ссылка
Разворачиваем слова в строке:
String str = "Привет Мир";
String reverse = Arrays.stream(str.split("\\s+"))
// для каждого слова в строке
// получаем массив символов
.map(String::toCharArray)
// разворачиваем массив символов
.map(arr -> {
IntStream.range(0, arr.length / 2).forEach(i -> {
char temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
});
return arr;
})
// собираем слово из массива символов
.map(String::valueOf)
// собираем троку из слов
.collect(Collectors.joining(" "));
System.out.println(reverse); // тевирП риМ