Reversing words in a string
"Minimize" is a really bad word to use when trying to consider the quality of your code.  It's vague, and it can lead to undesirable outcomes, such as broken or unusable code.

For example, is your goal to minimize the number of bytes used storing the source code on a hard drive? That might have been important when paper tape was a popular storage medium, but it's irrelevant today.  It's so irrelevant that the difference between these two files is less than the size of a sector, so both actually occupy the same amount of storage space.

Is your goal to reduce the number of CPU cycles spent?  Given that cell phones have 100MHz processors these days, you need to do more work to figure out if the effort you expend thinking about the problem will ever be made up for in efficiency experienced by your users.  If this is run once or twice, efficiency simply is not important. On the other hand, if it could ever become part of a networking protocol, efficiency is extremely important.  Quite honestly, English word reversal seems to be too specialized to fit the test of practicality for efficiency.

In general, what most people should be striving for in their code is "correctness" and "clarity".  You want to know that it works correctly in all situations.  The answer to that is to write unit tests.  For clarity, you want the code to be readable, understandable, and usable.  Make sure you have chosen good names.  Modularize the functions.  For example, you should consider extracting the dependency on System.out.println, as outputting the string has nothing to do with reversing the string.