Объекты класса Java String являются неизменными - их содержимое не может быть изменено после создания.
Вам понадобится как минимум два временных объекта - одиндля окончательного результата и один для промежуточных значений - даже если вы найдете способ избежать использования локальной переменной.
РЕДАКТИРОВАТЬ:
Тем не менее, так как вы можете использовать int[]
выможет быть в состоянии обмануть.
Поскольку char
можно назначить на int
, вы можете использовать String.charAt()
, чтобы создать массив int
со значениями символов в обратном порядке.,Или вам может быть разрешено использовать String.toCharArray()
для получения массива char
, который будет скопирован во временный int[]
.
Затем вы используете переменную, которая содержит ссылку на исходную строку (илипеременная результата, если она вам разрешена, начинается с пустой строки (ее легко получить с помощью прямого присваивания или String.substring()
) и используйте String.concat()
для создания конечного результата.
Однако ни в коем случае, однако,, сможете ли вы поменять местами символы, как это было бы в C / C ++.
EDIT 2:
Вот моя версия, которая не использует StringBuffer / Builders внутри:
int r[] = new int[s.length()];
int idx = r.length - 1;
for (int i : s.toCharArray()) {
r[idx--] = i;
}
s = s.substring(0, 0);
for (int i : r) {
s = s.concat(String.valueOf((char)i));
}