#include <cstddef>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @param n int整型
     * @return string字符串
     */
    string trans(string s, int n) {
        // write code here
        //思路:需要做两个操作。先调整所有字母的大小写,再反序每个单词的位置
        if (n == 0) return nullptr; //空字符串则不处理
        stack<string> mystack;
        string str;
        int pos = 0;
        for (int i = 0; i < n; i++) {
            if (s[i] >= 'a' && s[i] <= 'z') //如果是小写字母就转换为大写字母
                s[i] = s[i] - 32;
            else if (s[i] >= 'A' && s[i] <= 'Z')
                s[i] = s[i] + 32;
            if (s[i] == ' ') {
                //遇到空格,将空格前的一个字符串单词截取出来放入栈中
                mystack.push(s.substr(pos, i - pos));
                mystack.push(" ");
                pos = i + 1;
            }
            if (i == n - 1)
                mystack.push(s.substr(pos, i - pos + 1));
        }
        while (!mystack.empty()) {
            str += mystack.top();
            mystack.pop();
        }
        return str;
    }
};