题解 | #字符串变形#
字符串变形
https://www.nowcoder.com/practice/c3120c1c1bc44ad986259c0cf0f0b80e
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;
}
};
