面试题5:替换空格

请实现一个函数,把字符串 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\) 的位置上。如果允许新开辟一个数字,问题更简单。

上一篇:IOS中复杂JSON对象的解析


下一篇:ext.apply和ext.applyIf