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; } };