Какой из следующих способов является эффективным способом перевернуть слова в строке?
public String Reverse(StringTokenizer st){
String[] words = new String[st.countTokens()];
int i = 0;
while(st.hasMoreTokens()){
words[i] = st.nextToken();i++}
for(int j = words.length-1;j--)
output = words[j]+" ";}
OR
public String Reverse(StringTokenizer st, String output){
if(!st.hasMoreTokens()) return output;
output = st.nextToken()+" "+output;
return Reverse(st, output);}
public String ReverseMain(StringTokenizer st){
return Reverse(st, "");}
хотя первый способ кажется более читабельным и понятным, в нем есть две петли. Во втором методе я попытался сделать это хвостовой рекурсией. Но я не уверен, что Java оптимизирует хвостовой рекурсивный код.