请实现一个函数,把字符串
s
中的每个空格替换成"%20"。
非常简单的题目,书中的思路是先遍历一遍,计算空格的个数,然后从后向前移动,一次性移动到位。
如果想使用C++特性的话,思路更简单了。
class Solution {
public:
string replaceSpace(string s) {
string ans; //默认初始化为空;
for(const auto c : s){
if(c == ' '){
ans.push_back('%');
ans.push_back('2');
ans.push_back('0');
}
else
ans.push_back(c);
}
return ans;
}
};
非常明显的空间换时间的思路,一切以效率为先。
相似的题目还有:
合并两个有序数组:将数组B合并到数字A上,同样从后往前遍历,最大的数字放在 \(len(A)+len(B)-2\) 的位置上。如果允许新开辟一个数字,问题更简单。