Перевернуть все слова строки
Необходимо перевернуть каждое слово в вводимой пользователем строке, например Привет Мир ⇒ тевирП риМ . Я попытался написать метод для этого, но он лишь переворачивает первое слово. Как я могу это исправить?
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); > >
Отслеживать
user420361
задан 12 дек 2020 в 17:53
Даниил Кравцов Даниил Кравцов
3 2 2 бронзовых знака
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Разворачиваем слова в строке:
String str = "Привет Мир"; String reverse = Arrays.stream(str.split("\\s+")) // для каждого слова в строке // получаем массив символов .map(String::toCharArray) // разворачиваем массив символов .peek(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; >)) // собираем слово из массива символов .map(String::valueOf) // собираем троку из слов .collect(Collectors.joining(" ")); System.out.println(reverse); // тевирП риМ
Отслеживать
ответ дан 12 дек 2020 в 20:26
user420361 user420361
Вот рабочий код:
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);
Отслеживать
ответ дан 12 дек 2020 в 18:12
Николай Гнап Николай Гнап
399 4 4 серебряных знака 15 15 бронзовых знаков
- java
- строки
- сортировка
- замена
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как перевернуть строку в java
Чтобы перевернуть строку в Java, можно воспользоваться готовым решением — методом reverse() из библиотеки Apache Commons Lang. Для начала её нужно установить. Добавьте в файл build.gradle d секцию dependencies такой код:
implementation 'org.apache.commons:commons-lang3:3.12.0'
После установки можно начать применять эту библиотеку
import org.apache.commons.lang3.StringUtils; StringUtils.reverse("hello"); // "olleh"
Обратная строка в Java
Одна из распространенных задач, которую часто ставят перед программистами, заключается в необходимости перевернуть строку. В качестве примера можно привести следующую ситуацию: есть строка «Привет, Мир!», которую нужно вывести в обратном порядке.
В языке программирования Java для решения этой задачи есть несколько подходов. Ниже представлены два из них.
Использование класса StringBuilder
Класс StringBuilder в Java обладает встроенным методом reverse() , который позволяет перевернуть строку.
String str = "Привет, Мир!"; StringBuilder sb = new StringBuilder(str); sb.reverse(); String reversedStr = sb.toString();
В данном примере создается объект класса StringBuilder , в который передается исходная строка. Затем вызывается метод reverse() , который переворачивает строку. И, наконец, полученная перевернутая строка преобразуется обратно в строку с помощью метода toString() .
Использование массива символов
Еще один способ перевернуть строку в Java — это преобразовать строку в массив символов и изменить порядок элементов в массиве.
String str = "Привет, Мир!"; char[] charArray = str.toCharArray(); for(int i=0; i < charArray.length/2; i++) < char temp = charArray[i]; charArray[i] = charArray[charArray.length - i - 1]; charArray[charArray.length - i - 1] = temp; >String reversedStr = new String(charArray);
В этом примере строка преобразуется в массив символов с помощью метода toCharArray() . Затем происходит обмен элементами массива местами, так что первый элемент меняется с последним, второй — с предпоследним и так далее. В конце перевернутый массив символов преобразуется обратно в строку.
Оба этих способа работают и позволяют решить задачу переворота строки в Java.
Как вывести строку в обратном порядке на Java? 4 способа реверса строки

В этой короткой заметке мы рассмотрим несколько способов вывести строку в обратном порядке: напишем парочку своих «велосипедов» и посмотрим на возможности реверса строк, которые предоставляет Java из коробки.
Способы перевернуть строку в Java
В примерах ниже мы попробуем вывести строку в реверсном режиме разными способами, а именно: рекурсивно и с использованием методов charAt() , toCharArray() и StringBuffer() .
Рекурсивный метод
Первым делом давайте попробуем реализовать вывод строки в обратном порядке с помощью «велосипедной рекурсии» :).
public static String reverseStringWithRecursion ( String inputString ) < String rightPart ; String leftPart ; int length = inputString . length ( ) ; // заканчиваем рекурсивный обход if ( length <= 1 ) < return inputString ; leftPart = inputString . substring ( 0 , length / 2 ) ; rightPart = inputString . substring ( length / 2 , length ) ; // рекурсивно переворачиваем левую и правую часть входной строки return reverseStringWithRecursion ( rightPart ) + reverseStringWithRecursion ( leftPart ) ;
Суть этого метода сводится к тому, чтобы рекурсивно разделять входную строку на две части, уменьшая с каждым разом длину входной строки. Как только длина этой строки уменьшится до одного символа, это будет означать, что переворачивание фрагмента закончено и эти фрагменты будут собраны воедино. В итоге на выход мы получаем новую строку в обратном порядке:
// пример работы рекурсивного способа
// вручную считаем для строки «java»:
При первом проходе длина строки = 4 , а левая и правая части :
leftString = «ja»
rightString = «va»
// проход закончен так:
return «va» + «ja»
Теперь «va» + «ja» уже по отдельности опять проходят через этот метод :
пример для «va» :
leftString = «v»
rightString = «a»
// проход закончен так:
return «a» + «v»
пример для «ja» :
leftString = «j»
rightString = «a»
// проход закончен так:
return «a» + «j»
в итоге на выход получаем «avaj»
Рекурсивный метод на выход выдаст тот же результат.
Переворачиваем строку с помощью charAt()
Другим способом является проход по символам в строке с помощью метода charAt() и сохранение строки с обратным порядком символов. Смотрим на примере:
public static String reverseStringWithCharAt ( String inputString ) < int stringLength = inputString . length ( ) ; String result = "" ; for ( int i = 0 ; i < stringLength ; i ++ ) < result = inputString . charAt ( i ) + result ; return result ;
В коде выше мы в цикле обходим входную строку и по индекску забираем символ. Далее пересоздаем результирующую строку с новым символом вначале.
Выводим строку в обратном порядке с помощью toCharArray()
Этот способ очень похож на предыдущий, но вместо charAt() мы представляем строку в виде массива символов используя метод toCharArray() и затем в обратном порядке присваиваем символы результирующей строке. Смотрим пример:
public static String reverseWithCharArray ( String inputString ) < char [ ] charArray = inputString . toCharArray ( ) ; String resultString = "" ; for ( int i = charArray . length - 1 ; i >= 0 ; i — ) < resultString += charArray [ i ] ; return resultString ;
Используем StringBuffer или StringBuilder для переворачивания строки в Java
В этом способе мы воспользуемся методами для вывода строки в обратном порядке, которые строенны в Java и не требуеют с нашей стороны никаких обработок. Все, что нам нужно использовать — это класс StringBuffer и его метод reverse() :
String inputString = «java» ;
String reversedString = new StringBuffer ( inputString ) . reverse ( ) . toString ( ) ;
Вот так в две строчки кода мы избавились от необходимости писать отдельные методы для переворота строки — Java за нас делает всю работу. Интересно знать, что внутри метода reverse() происходит сложный процес создания новой перевернутой строки со множеством проверок и оптимизаций быстродействия, о которых мы не задумывались в наших тестовых программках.
Подробнее о работе со строками читайте здесь.
Используете ли вы какой-то из этих способов в своих проектах? Также пишите свои методы в комментариях!
Больше полезных статей!
5 thoughts to “Как вывести строку в обратном порядке на Java? 4 способа реверса строки”
Алексей :
В «велосипедной рекурсии» возвращает это: return reverseStringWithRecursion(rightPart) + reverseStringWithRecursion(leftPart); Тут точно никакой ошибки? если нет, то объясните, как вычислении возвращаемого значения может вызываться та же самая функция? Я в этом деле пока новичок…
Алексей :
Все, понял. Вопрос отпал
Heretic :
В общем случае вместо StringBuffer рекомендуется использовать StringBuilder, у него тоже есть метод reverse().
Способ «Переворачиваем строку с помощью charAt()» неправильно написан, строка будет в том же порядке
Надо поправить направление цикла, с конца.