剑指 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,查找其中的空格,效率“可能”不高(实际上不一定很差,要测量才知道!)
本文作者:Zijian/TENG(微信公众号:好记性如烂笔头),转载请注明原文链接:https://www.cnblogs.com/tengzijian/p/15463299.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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工具