【剑指Offer-05】替换空格

问题

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例

** 输入:** s = "We are happy."
输出: "We%20are%20happy."

解答1:额外申请空间

class Solution {
public:
    string replaceSpace(string s) {
        string res;
        for (char i : s) {
            if(i == ' ') res += "%20";
            else res += i;
        }
        return res;
    }
};

解答2:原地算法

class Solution {
public:
    string replaceSpace(string s) {
        int n = s.size(), m = n - 1;
        for (char i : s)
            if (i == ' ') n += 2;
        s.resize(n); // 扩充空间
        for (int i = n - 1; i >= 0; i--, m--) {
            if (s[m] != ' ') s[i] = s[m];
            else {
                s[i--] = '0';
                s[i--] = '2';
                s[i] = '%';
            }
        }
        return s;
    }
};
posted @ 2021-03-09 20:51  tmpUser  阅读(42)  评论(0编辑  收藏  举报