image.png

思路

先找到每个单词的位置,然后对这个单词中的字母进行反转

  1. class Solution {
  2. public String reverseWords(String s) {
  3. int n = s.length();
  4. char a[] = s.toCharArray();
  5. int i = 0,j=0;
  6. //找到每一个单词的起始位置和结束位置
  7. while(i<n){
  8. while(i<j||i<n&&a[i]==' ') i++;
  9. while(j<i||j<n&&a[j]!=' ') j++;
  10. reverse(a, i, j-1);
  11. }
  12. return String.valueOf(a);
  13. }
  14. //对从第i个位置到j个位置进行反转
  15. private void reverse(char[] a,int i,int j){
  16. while(i<=j){
  17. char tmp = a[i];
  18. a[i++]=a[j];
  19. a[j--]=tmp;
  20. }
  21. }
  22. }

类似题目

151 翻转字符串里的单词
**