Задачка классическая и очень простая. Посему имеет смысл ее использовать только для совсем уж начинающих программистов.
Хотя меня как-то недавно тоже попросили ее решить 🙂
Задача
Развернуть строку символов. Как вариант, можно попросить развернуть массив.
Решение
Решений опять же много. Предлагаю все решения, где для разворота массива понадобился еще один массив считать незачётом. Можно это требование внести в условие, но, ИМХО, лучше посмотреть не предложит ли вдруг кандидат подобного решения и уже потом ввести это дополнительное ограничение. Единственным оправданием можно считать вопрос о том необходимо ли сохранить исходную строчку. Но это замечание не относится к Java, т.к. там придется выносить символы из строки в массив. И этот массив, очевидно, беречь нам ни к чему.
Краше всего на C/C++, где строчки — те же самые массивы. Будем использовать такую милую любому настоящему программисту на C арифметику указателей.
void reverseString(char *str)
{
int i = 0;
int len = strlen(str)-1;
for (; i <= len/2; i++)
{
char c = *(str+i);
*(str+i) = *(str+len-i);
*(str+len-i) = c;
}
}
На Java, как я говорил, выглядит менее элегантно, т.к. со строкой нельзя работать, как с массивом. И получатеся нечто вроде:
String reverseString(String s) {
char []str = s.toCharArray();
int len = str.length-1;
for (int i = 0; i <= len/2; i++) {
char c = str[i];
str[i] = str[len-i];
str[len-i] = c;
}
return new String(str);
}