Позвольте предложить решение, которое не использует StringBuilder
Вы должны знать, что нет правильной причины не использовать этот класс, так как это хорошо проверено
Первым шагом было бы разделить ваше String
на первую найденную запятую (я предположил, что в случае, если их больше одного, остальные являются частью текста для обратного). Для этого мы можем String.split(String regex, int limit)
.
Предел определяется следующим образом
- Если предел n больше нуля, то шаблон будет применяться не более n - 1 раз, длина массива будет не более n , а последняя запись массива будет содержать все входные данные, кроме последний сопоставленный разделитель.
- Если n не является положительным, то шаблон будет применяться столько раз, сколько возможно, и массив может иметь любую длину.
- Если n равно нулю, шаблон будет применяться столько раз, сколько возможно, массив может иметь любую длину, а завершающие пустые строки будут отбрасываться.
Пример:
"foobar".split(",", 2) // {"foobar"}
"foo,bar".split(",", 2) // {"foo", "bar"}
"foo,bar,far".split(",", 2) // {"foo", "bar,far"}
Так что это может быть использовано в наших интересах здесь:
String text = "Jake, ma I ,dlrow olleh";
String[] splittedText = text.split( ",", 2 ); //will give a maximum of a 2 length array
Знаете, нам просто нужно обратить вспять второй массив, если он существует, используя самый простой алгоритм.
String result;
if ( splittedText.length == 2 ) { //A comma was found
char[] toReverse = splittedText[1].toCharArray(); //get the char array to revese
int start = 0;
int end = toReverse.length - 1;
while ( start < end ) { //iterate until needed
char tmp = toReverse[start];
toReverse[start] = toReverse[end];
toReverse[end] = tmp;
start++; //step forward
end--; //step back
}
result = new String( toReverse ) + splittedText[0];
}
Эта часть должна была быть сделана с StringBuilder
, используя
if ( splittedText.length == 2 ){
result = new StringBuilder(splittedText[1]).reverse().toString() + splittedText[0];
}
И если есть только одна ячейка, результат совпадает с исходным текстом
else { //No comma found, just take the original text
result = text;
}
Тогда нам просто нужно напечатать результат
System.out.println( result );
Привет, мир, я Джейк