#include <cctype>
#include <fstream>
#include <iterator>
class Solution {
public:
    void resverse(string &s,int start,int end)
    {
        int left = start;
        int right = end;
        while(left < right)
        {
            swap(s[left],s[right]);
            left++;
            right--;
        }
    }
    string trans(string s, int n) {
        // write code here
        resverse(s, 0, n-1);
        int start = 0;
        for(int i = 0;i<=n;++i)
        {
            if(s[i] == ' ' || s[i] == '\0')
            {
                resverse(s, start, i-1);
                start = i + 1;
            }
        }
        for(int i = 0;i<n;++i)
        {
            if(isupper(s[i]))
                s[i] = tolower(s[i]);
            else if(islower(s[i]))
                s[i] = toupper(s[i]);
        }
        return s;
    }
};

解题思路:双逆转

先逆转整个字符串,然后再以空格为界,逆转每个单词