方法一:
ss存改变后的总字符串
将字符大小写反转后添加到str中,遇到空格则把str添加到ss的中,然后把str清空
最后ss添加剩余的str的字符串并返回

public String trans(String s, int n) {
        StringBuffer ss=new StringBuffer();
        StringBuffer str=new StringBuffer();
        for (int i = n-1; i >= 0; i--) {
            if(s.charAt(i)==' '){
                ss.append(str.toString()+" ");
                str=new StringBuffer();
            }else {
                //大小写反转
                char sss = (char) (s.charAt(i) < 97 ? s.charAt(i) + 32 : s.charAt(i) - 32);
                //将字符添加到str的首个位置保证单词不被反转
                str.insert(0, sss);
            }
        }
        return ss.append(str.toString()).toString();
    }

方法二:
只需要一个stringBuffer
需要在每个空格处记录下上一个单词的长度,然后从上一个单词长度后继续添加字符

public String trans(String s, int n) {
        StringBuffer str=new StringBuffer();
        int start=0;
        for (int i = n-1; i >= 0; i--) {
            if(s.charAt(i)==' '){
                str.append(" ");
                start=n-i;
            }else {
                char sss = (char) (s.charAt(i) < 97 ? s.charAt(i) + 32 : s.charAt(i) - 32);
                str.insert(start, sss);
            }
        }
        return str.toString();
    }

时间复杂度O(N)
空间复杂度o(N)