剑指 Offer 05. 替换空格

发布时间 2023-03-22 21:11:14作者: xiazichengxi

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

class Solution {
public:
    string replaceSpace(string s) {
        //快慢指针从头遍历 每遇到一个空格 就让快指针多走两步 
        int fast = 0;
        int slow = 0;
        for (; slow < s.size(); slow++)
        {
            if (s[slow] == ' ')
            {
                fast += 3;
            }
            else
            {
                fast++;
            }
        }
        s.resize(fast + 1);
        //此时的fast指向扩充后字符串的末尾 low指向未扩充的末尾
        //让两个指针从后往前遍历 每遇到一个空格就往fast指针的位置从后往前写02%
        for (; slow >= 0; slow--)
        {
            if (s[slow] == ' ')
            {
                s[fast--] = '0';
                s[fast--] = '2';
                s[fast--] = '%';
            }
            else
            {
                s[fast--] = s[slow];
            }
        }
        return s;
    }
    string replaceSpace(string s) {
        for (int i = 0; i < s.size(); i++)
        {
            if (s[i] == ' ')
            {
                s.replace(i, 1, "%20");
            }
        }
        return s;
    }
};