Перейти к содержимому

Как перевернуть строку в java

  • автор:

Перевернуть все слова строки

Необходимо перевернуть каждое слово в вводимой пользователем строке, например Привет Мир ⇒ тевирП риМ . Я попытался написать метод для этого, но он лишь переворачивает первое слово. Как я могу это исправить?

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? 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()» неправильно написан, строка будет в том же порядке
Надо поправить направление цикла, с конца.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *