Эта проблема имеет естественную рекурсивную структуру:
static String shake(String str, int n)
{
if(n == 0) return str;
String lastChar = str.substring(str.length()-1);
String firstChar = str.substring(0, 1);
String middle = str.substring(1, str.length()-1);
return lastChar + firstChar + shake(middle, n-1);
}
Вызывается через вспомогательную функцию:
static String shake(String str)
{
return shake(str, str.length()/2);
}
Тест:
System.out.println(shake("Hello"));
System.out.println(shake("Sokolade"));
Вывод:
oHlel
eSdoaklo