В этой статье мы рассмотрим несколько способов, как перевернуть (инвертировать) строку.
Инвертируем строку с помощью StringBuilder
Самый простой способ, который не требует никаких дополнительных библиотек – это использовать стандартный StringBuilder:
StringBuilder sb = new StringBuilder("Привет, мир 1"); System.out.println(sb.reverse());
Результат инвертирования строки:
1 рим ,тевирП
Переворачиваем строку с помощью библиотеки StringUtils
Если в вашем проекте уже подключена библиотека StringUtils, будет удобно воспользоваться именно ею. Если вы не подключили библиотеку, это можно сделать с помощью подключения зависимости в файле pom.xml:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</version> </dependency>
Теперь, для того, чтобы вывести строку в обратном порядке, воспользуемся методом 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. В данной статье мы показали наиболее удобные из них.