题解 | 字符串变形
字符串变形
https://www.nowcoder.com/practice/c3120c1c1bc44ad986259c0cf0f0b80e
class Solution {
public:
string trans(string s, int n) {
for(int i=0; i<s.length(); i++){
if(s[i]>='a' && s[i]<='z')
s[i] = s[i] - 'a' + 'A';
else if(s[i]>='A' && s[i]<='Z')
s[i] = s[i] - 'A' + 'a';
}
stack<string> st;
string curr = "";
for(int i=0; i<s.length(); i++){
if(s[i]!=' ')
curr += s[i];
else{
st.push(curr);
curr = "";
}
}
st.push(curr);
string res;
while(!st.empty()){
curr = st.top();
st.pop();
res += curr + ' ';
}
res.pop_back(); // 去掉多余的一个空格
return res;
}
};
这题踩了一个大坑,就是超时问题。
limit=1s,但是最后一个用例我这里显示运行了1001ms。
将res = res + curr + ' '改为res += curr + ' '即可;
另外一个string拼接也改为这样,就能省很多时间。拼接太费时间了,stack的push和pop其实也很费时间,还能优化。
