剑指 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