image.png

解决思路

字符串

先处理字符串,将首尾空格都删除;
倒序遍历字符串,当第一次遇到空格时,添加s[i + 1: j](即添加一个完整单词);
然后,将直至下一个单词中间的空格跳过,并记录下一个单词尾部j;
继续遍历,直至下一次遇到第一个空格,回到1.步骤;
由于首部没有空格,因此最后需要将第一个单词加入,再return。

  1. public String reverseWords(String s){
  2. StringBuffer res = new StringBuffer();
  3. //去掉最后面的空格
  4. s = s.trim();
  5. //从最后面开始遍历
  6. int i = s.length() - 1,j = s.length();
  7. while (i > 0){
  8. //如果到了空格
  9. if (s.charAt(i) == ' '){
  10. //把空格之间的加入进去
  11. res.append(s.substring(i + 1,j));
  12. res.append(' ');
  13. //去掉之间的空格
  14. while (s.charAt(i) == ' ')
  15. i--;
  16. j = i + 1;
  17. }
  18. i--;
  19. }
  20. return res.append(s.substring(0,j)).toString();
  21. }