Как перевернуть строку в Java: методы реверса и их примеры
Java String Reverse — это задача, заключающаяся в обращении порядка символов в строке. Этот процесс может быть выполнен через различные методы и подходы, но наиболее распространенный способ — это использование метода StringBuilder.
Ниже приведен пример кода, демонстрирующий, как обратить строку в Java, используя метод StringBuilder:
String str = "hello world"; StringBuilder sb = new StringBuilder(str); String reversedStr = sb.reverse().toString(); System.out.println(reversedStr); // выведет "dlrow olleh"
Первым шагом является создание новой строки с помощью ключевого слова `String`. Затем мы создаем новый объект `StringBuilder` с помощью этой строки, который содержит метод `reverse()` для обращения порядка символов. Мы применяем его к объекту StringBuilder и преобразуем результат в строку, используя метод `toString()`. В конце мы выводим обратную строку на экран с помощью `System.out.println()`.
Кроме того, можно использовать и другой подход, который заключается в обходе строки символ за символом и добавлении символов в новую строку в обратном порядке. Но этот метод может быть менее эффективным в отношении производительности, особенно для больших строк.
Вот пример кода для решения этой задачи с помощью второго подхода:
String str = "hello world"; String reversedStr = ""; for (int i = str.length() - 1; i >= 0; i--) < reversedStr += str.charAt(i); >System.out.println(reversedStr); // выведет "dlrow olleh"
Здесь мы проходимся по строке, начиная с последнего символа и добавляем каждый символ в начало новой строки. В результате мы получаем обратную строку.
Оба эти подхода могут быть использованы для обращения порядка символов в строке в Java в зависимости от требований и предпочтений программиста.
Реверс строки в Java
Строка – это последовательность символов, которая считается объектом в Java. Существуют различные операции, которые вы можете выполнять над объектом String. Одной из наиболее часто используемых операций над строковым объектом является реверс.
1. Использование метода CharAt
В приведенной ниже программе вы сможете понять, как перевернуть строку в Java, введенную пользователем. Здесь использован метод CharAt() для извлечения символов из входной строки. Основная задача метода – вернуть символ по указанному индексу в указанной строке. Затем добавили их в обратном порядке, чтобы изменить заданную строку. Это один из простых вариантов.
package Edureka; import java.util.*; public class StringReverse< public static void main(String args[]) < String initial, rev=""; Scanner in=new Scanner(System.in); System.out.println("Enter the string to reverse"); initial=in.nextLine(); int length=initial.length(); for(int i=length-1;i>=0;i--) rev=rev+initial.charAt(i); System.out.println("Reversed string: "+rev); > >
Когда вы выполняете эту программу, вывод выглядит так, как показано ниже:
Enter the string to reverse HELLO EDUREKA Reversed string: AKERUDE OLLEH
2. Использование классов String Builder/String Buffer
StringBuffer и StringBuilder содержат встроенный метод reverse(), который используется для обращения символов. Этот метод заменяет последовательность символов в обратном порядке.
package Edureka; import java.util.*; public class StringRev < // Function to reverse a string in Java using StringBuilder public static String rev(String s)< return new StringBuilder(s).reverse().toString(); >public static void main(String[] args) < String s= "Welcome to Edureka"; // Note that string is immutable in Java s= rev(s); System.out.println("Result after reversing a string is : "+s); >>
При выполнении приведенного выше кода результат будет таким, как показано ниже:
Result after reversing a string is : akerudE ot emocleW
Кроме того, вы также можете использовать метод reverse() класса StringBuffer, как и StringBuilder. Давайте посмотрим на код ниже.
package Edureka; import java.util.*; public class StringRev < // Function to reverse a string in Java using StringBuffer public static String rev(String s)< return new StringBufferr(s).reverse().toString(); >public static void main(String[] args) < String s= "Welcome to Edureka"; // Note that string is immutable in Java s= rev(s); System.out.println("Result after reversing a string is : "+s); >>
При запуске программы выходные данные будут такими же, как и у класса StringBuilder.
Примечание: можете обратить как String, используя StringBuffer reverse(), как показано в приведенной выше программе, либо просто использовать логику кода, как показано ниже:
StringBuffer sb =new StringBuffer("JavaEdureka"); System.out.println(sb.reverse()); Output: akerudEavaJ
И StringBuilder, и StringBuffer имеют одинаковый подход к реверсу строки в Java. Но StringBuilder предпочтительнее, поскольку он не синхронизирован и работает быстрее, чем StringBuffer.
3. Использование обратной итерации
Сначала преобразовываем данную строку в символьный массив, используя метод CharArray(). После этого просто перебираем данный массив в обратном порядке.
package Edureka; import java.util.*; public class StringRev< // Function to reverse a string in Java public static String reverseString(String s)< //Converting the string into a character array char c[]=s.toCharArray(); String reverse=""; //For loop to reverse a string for(int i=c.length-1;i>=0;i--) < reverse+=c[i]; >return reverse; > public static void main(String[] args) < System.out.println(reverseString("Hi All")); System.out.println(reverseString("Welcome to Edureka Blog")); >>
llA iH golB akerudE ot emocleW
4. Использование рекурсии
Рекурсия – это не что иное, как функция, которая вызывает сама себя.
package Edureka; import java.util.*; public class StringRecursion < String rev(String str) < if(str.length() == 0) return " "; return str.charAt(str.length()-1) + rev(str.substring(0,str.length()-1)); >public static void main(String[ ] args) < StringRecursion r=new StringRecursion(); Scanner sc=new Scanner(System.in); System.out.print("Enter the string : "); String s=sc.nextLine(); System.out.println("Reversed String: "+r.rev(s)); >>
Enter the string : Java is the blooming technology since its existence Reversed String: ecnetsixe sti ecnis ygolonhcet gnimoolb eht si avaJ
В приведенном выше коде создан объект для класса StringRecursion r. Затем прочитана введенная строка с помощью sc.nextLine() и сохранена в строковую переменную s. Наконец, вызван обратный метод, как r.rev (s).
5. Меняем местами буквы в строке
Эта программа реверсирует буквы, присутствующие в строке, введенной пользователем. Не переворачивает всю строку, как было показано ранее в предыдущих примерах. Например: Hello People будет называться olleH elpoeP.
package Edureka; public class stringreverse < public static void main(String[] args) < // TODO Auto-generated method stub String str = "Welcome To Edureka"; String[] strArray = str.split(" "); for (String temp: strArray)< System.out.println(temp); >for(int i=0; i=0; j--) System.out.print(" "); > > >
Вывод вышеуказанной программы будет таким, как показано ниже:
Welcome To Edureka emocleW oT akerudE
Как перевернуть строку
В этой статье мы рассмотрим несколько способов, как перевернуть (инвертировать) строку.
Инвертируем строку с помощью StringBuilder
Самый простой способ, который не требует никаких дополнительных библиотек – это использовать стандартный StringBuilder:
StringBuilder sb = new StringBuilder("Привет, мир 1"); System.out.println(sb.reverse());
Результат инвертирования строки:
1 рим ,тевирП
Переворачиваем строку с помощью библиотеки StringUtils
Если в вашем проекте уже подключена библиотека StringUtils, будет удобно воспользоваться именно ею. Если вы не подключили библиотеку, это можно сделать с помощью подключения зависимости в файле pom.xml:
org.apache.commons commons-lang3 3.9
Теперь, для того, чтобы вывести строку в обратном порядке, воспользуемся методом StringUtils.reverse:
String s = "Привет, мир 2"; System.out.println(StringUtils.reverse(s));
2 рим ,тевирП
Кстати, в этом же классе есть метод StringUtils.reverseDelimited, который инвертирует строку не посимвольно, а по слова. Ему требуется указать на вход строку и разделитель между словами:
String s = "Привет, мир 2"; System.out.println(StringUtils.reverseDelimited(s, ' '));
2 мир Привет,
Инвертируем строку с помощью массива char[]
Приведённые выша два способа инвертирования строки являются наиболее простыми, читаемыми и удобными. Но на всякий случай приведём ещё один способ с помощью массива char:
String s = "Привет, мир 3"; char[] result = s.toCharArray(); int startIndex = 0; int endIndex = result.length - 1; char temp; for (; endIndex > startIndex; startIndex++, endIndex--) < temp = result[startIndex]; result[startIndex] = result[endIndex]; result[endIndex] = temp; >System.out.println(result);
Здесь мы сначала преобразуем входную строку в массив символов, затем последовательно меняем символы местами, используя промежуточную переменную temp. Результат выполнения такой программы:
3 рим ,тевирП
Этот способ является более громоздким и менее удобным, поэтому рекомендуем вам использовать именно первые два способа. Тем не менее, этот вопрос может встречаться на собеседовании на позицию Junior Java Developer
Заключение
Существует множество способов инвертировать строку в Java. В данной статье мы показали наиболее удобные из них.
Как перевернуть строку
- ← Что такое NullPointerException и как это исправить
- Lombok – установка и настройка →
Как развернуть строку в Java?
Изучите различные способы разворота строки в Java с использованием StringBuilder, рекурсии и метода toCharArray. Выберите подходящий метод в зависимости от ваших требований.
Cодержание
- 1. Использование StringBuilder или StringBuffer
- 2. Использование рекурсии
- 3. Использование метода toCharArray
- Заключение
Развернуть строку в программировании означает изменить порядок символов в строке на противоположный. В Java существует несколько способов развернуть строку, и мы рассмотрим их в этой статье.
1. Использование StringBuilder или StringBuffer
StringBuilder и StringBuffer — это классы, предназначенные для работы с изменяемыми строками в Java. Они обеспечивают эффективные операции над строками, включая развертывание.
Для развертывания строки с помощью StringBuilder или StringBuffer, можно воспользоваться методом reverse() . Этот метод переворачивает порядок символов в текущей строке.
Вот пример кода, демонстрирующий использование StringBuilder для развертывания строки:
String str = "Привет, мир!"; StringBuilder sb = new StringBuilder(str); sb.reverse(); String reversedStr = sb.toString(); System.out.println(reversedStr);
В результате выполнения этого кода будет выведена развернутая строка: «!рим ,тевирП».
2. Использование рекурсии
Другим способом развернуть строку в Java является использование рекурсии. Рекурсивная функция может развернуть строку, вызывая саму себя с уменьшенной входной строкой.
Вот пример рекурсивной функции для развертывания строки:
public static String reverseString(String str) < if (str.isEmpty()) < return str; >else < return reverseString(str.substring(1)) + str.charAt(0); >> public static void main(String[] args)
При выполнении данного кода будет выведена развернутая строка: «!рим ,тевирП».