class Solution {
  public:
    string trans(string s, int n) {
        stack<string> sk;
        string str;
        s.push_back(' ');//避免特判
        for (int i = 0; i <= n; ++i) { //注意此时单词长度为n+1
            if (s[i] == ' ') {
                sk.push(str);//以空格为界进行压栈  到空格了就把str放到 sk[i+1]的位置
                str = "";// 空格清空str 
            } else {
                if (s[i] >= 'a' && s[i] <= 'z') {
                    str += (s[i] - 'a' + 'A'); //在str 的基础上加上大小写变化后的字
                } else {
                    str += (s[i] - 'A' + 'a');
                }
            }
        }
        string ans;
        while (!sk.empty()) {
            //从栈中逐个弹出单词
            ans += sk.top(); //顶元素是最后进去的元素 放到ans里
            sk.pop();//释放掉最后一个
            ans.push_back(' ');//加空格
        }
        ans.pop_back();//去除最后一个单词后的空格
        return ans;
    }
};