剑指 Offer 05. 替换空格

请实现一个函数,把字符串 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;
    }
};
posted @   xiazichengxi  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示
主题色彩