//时间复杂度O(N)空间复杂度O(1)
class Solution {
public:
    string trans(string s, int n) {
        // write code here
        int left=0,right=0;
        while(right<n){
            if(s[right]!=' ')
                right++;
            else{//翻转left到right-1之间的内容
                int i=left,j=right-1;
                while(j>i){
                    char ch=s[i];
                    s[i]=s[j];
                    s[j]=ch;
                    i++;j--;
                }
                left=right+1;
                right++;
            }
        }
        //因为每次是都是遇到空格才翻转,所以最后一个单词会被遗漏
        int i=left,j=n-1;
        while(j>i){
            char ch=s[i];
            s[i]=s[j];
            s[j]=ch;
            i++;j--;
        }
        //最后再整体翻转一下
        i=0,j=n-1;
        while(j>i){
          char ch=s[i];
            s[i]=s[j];
            s[j]=ch;
            i++;j--;
        }
        //然后再遍历一遍把大小写互换
        for(int index=0;index<n;index++){
            if(s[index]==' ')
                continue;
           else if(s[index]>='a'&&s[index]<='z'){
                s[index]=s[index]-32;
            }
            else s[index]=s[index]+32;
        }
        return s;
    }
};