я имею "Hello World"
держал в строковой переменной с именем hi
.
Мне нужно распечатать, но в обратном порядке.
Как я могу это сделать? Я понимаю, что в Java уже встроена какая-то функция, которая делает это.
Связанный: Обратное каждое отдельное слово строки «Hello World» с Java
Ответы:
Вы можете использовать это:
Или для версий более ранних, чем JDK 1.5, используйте
java.util.StringBuffer
вместоStringBuilder
- они имеют одинаковый API. Спасибо комментаторам за то, что они указали, чтоStringBuilder
предпочтительнее в настоящее время, когда нет проблем с параллелизмом.источник
StringBuilder
параллелизмом это не проблема (и я думаю, именно это он имел в виду).String hi = "Hello World";
. Так что я думаю , что в своем ответе должна не быть никакой двойная кавычкаhi
. Я имею в виду, что это должно быть такnew StringBuilder(hi).reverse().toString()
Для проблем с онлайн-судьями, которые не разрешают
StringBuilder
илиStringBuffer
, вы можете сделать это на месте, используяchar[]
следующее:источник
http://www.java2s.com/Code/Java/Language-Basics/ReverseStringTest.htm
источник
источник
Я делаю это с помощью следующих двух способов:
Обратная строка по CHARACTERS:
Обратная строка по словам:
источник
Взгляните на API Java 6 под StringBuffer
источник
reverse()
иtoString()
), поэтому разница, вероятно, даже не будет измеримы.Вот пример использования рекурсии:
источник
Вот решение низкого уровня:
источник
Я пытался, просто для удовольствия, используя стек. Вот мой код:
источник
Поскольку приведенный ниже метод (использующий XOR ) для обращения строки не указан, я прилагаю этот метод для обращения строки.
Алгоритм основан на:
Фрагмент кода:
Вывод:
keetarp
источник
Как уже отмечали другие, предпочтительным способом является использование:
Но если вы хотите реализовать это самостоятельно, я боюсь, что остальные ответы имеют недостатки.
Причина в том, что
String
представляет список точек Unicode , закодированных вchar[]
массиве в соответствии с кодировкой переменной длины: UTF-16 .Это означает, что некоторые кодовые точки используют один элемент массива (одну кодовую единицу), но другие используют два из них, поэтому могут существовать пары символов, которые должны рассматриваться как одна единица (последовательные суррогаты "high" и "low") ,
источник
Это очень просто в минимальном коде строк
источник
Это помогло мне
источник
1. Использование массива символов:
2. Использование StringBuilder:
ИЛИ
источник
Я использовал этот метод, чтобы превратить имена назад и в нижний регистр.
источник
источник
Один естественный способ обратить вспять это
String
использовать aStringTokenizer
и стек.Stack
является классом, который реализует простой в использовании стек объектов LIFO.Положите его в стек вперед
Распечатать стопку назад
источник
источник
Все вышеприведенное решение слишком хорошо, но здесь я делаю обратную строку, используя рекурсивное программирование.
Это полезно для тех, кто ищет рекурсивный способ сделать обратную строку.
источник
Процедура :
Мы можем использовать split () для разделения строки. Затем используем обратный цикл и добавляем символы.
Фрагмент кода:
источник
public String reverseWords (String s) {
источник
Вы также можете попробовать это:
источник
источник
рекурсии:
источник
Просто для удовольствия .. :)
Пройдите от 0 до len / 2, а затем
Сложность времени: O (n)
Космическая сложность: O (n)
источник
источник
источник
источник
источник
Если вы хотите использовать простой цикл for!
источник