class Solution {
  public:
    string trans(string s, int n) {
        if (n == 0)
            return s;
        string res;
        for (int i = 0; i < n; i++) {
            //大小写转换 fast-template
            if (s[i] <= 'Z' && s[i] >= 'A')
                res += s[i] - 'A' + 'a';
            else if (s[i] >= 'a' && s[i] <= 'z')
                res += s[i] - 'a' + 'A';
            else
                //空格直接复制
                res += s[i];
        }
        //翻转整个字符串
        reverse(res.begin(), res.end());
        for (int i = 0; i < n; i++) {
            int j = i;
            //以空格为界,二次翻转
            while (j < n && res[j] != ' ')
                j++;
            reverse(res.begin() + i, res.begin() + j);
            i = j;
        }
        return res;
    }
};



/*class Solution {
public:
    string trans(string s, int n) {
        string p="",q="";
        for(int j=0;j<n;j++)
        {
            if(s[j]==' ')
            {
                p=" "+q+p;
                q="";
                continue;
            }
            if(s[j]>='a'&&s[j]<='z')
            {
                s[j]+='A'-'a';
            }
            else if(s[j]>='A'&&s[j]<='Z')
            {
                s[j]+='a'-'A';
            }
            q+=s[j];
            if(j==(n-1))
            {
                p=q+p;
            }
        }
        return p;
    }
};*/