2021年9月8日11:10:56
2021年9月8日11:44:43

卡半天在 边界判定上
首先对整体进行翻转 然后对 每个单词进行翻转 两次翻转就可以得到正确的
left right 代表单词 [,)左闭右开 因此right到最后一个词应该是能继续的right<=str.length() 有等号
res = res.substring(0,left) + temp + res.substring(right); 对res中的数组进行翻转
从 left 到right的位置 左闭右开
接下来主要判断是不是到结尾了 后面还有没有空格 如果还有 就说明可以继续 如果到结尾了 就退出循环结束 否则的话由于判断有等号 会一直循环

但是发现 每次都把left变成++right; 最后到结尾 会直接超出 不需要多余的判断

public class Solution {
    public String ReverseSentence(String str) {
        String res = Reverse(str);

        int left = 0;
        int right = 0;

        while(right<=str.length()){
            if(right < res.length() && res.charAt(right) !=  ' ' ) {right++;continue;}

            String temp = Reverse(res.substring(left,right));
            res = res.substring(0,left) + temp + res.substring(right);

            left = ++right;

            /***if(right == str.length()) break;
            //else left = ++right; 也是一样的
            if(res.charAt(right) == ' '){
                left = ++right;
            }***/
        }
        return res;
    }
    public String Reverse(String str) {
        int length = str.length();
        String reverse = "";
        for (int i = 0; i < length; i++){
            reverse = str.charAt(i) + reverse;
        }
        return reverse;
    }
}