剑指 Offer - 5 替换空格

描述

请实现一个函数,将一个字符串s中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

数据范围

0<=len(s)<=1000。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。

解法 0 - 书中 C 语言实现,双指针、从后向前

  • 先扫描原始字符串长度、空格数量,计算新字符串长度
  • 从后向前扫描 while(idx_org>=0 && idx_new>idx_org) ...

解法 1 - 相对传统的解法

string replaceSpace(string s) {
    string res;
    for(auto c : s)
    {
        if(c == ' ')
            res += "%20";
        else
            res += c;
    }
    return res;
}

简单好理解,o(n) 时间、空间复杂度,无特殊要求推荐该解法

解法 2 - 充分利用标准库、代码较少

string replaceSpace(string s) {
    unsigned long pos;
    while((pos = s.find(" ")) != string::npos)
        s.replace(pos, 1, "%20");
    return s;
}

复习下 find、replace 的用法
多次扫描 s,查找其中的空格,效率“可能”不高(实际上不一定很差,要测量才知道!)

posted @   Zijian/TENG  阅读(99)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示