剑指 Offer 05. 替换空格
要求:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
使用python做的时候直接调用replace函数即可;
使用c++做这道题的时候莫名的好多string函数不能使用,比如append等;所以字符串拼接的时候我直接使用的加号;
代码如下:
- python
class Solution(object):
def replaceSpace(self, s):
"""
:type s: str
:rtype: str
"""
return s.replace(" ","%20")
- C++
class Solution {
public:
string replaceSpace(string s) {
string strb="";
for(int i = 0;i<s.length();i++)
{
if(s[i] == ' ')
{
strb +="%20";
}
else
{
strb+=s[i];
}
}
return strb;
}
};
在运行时间和内存消耗方面,C++表现出更加明显地优势;
另外把一位前辈的代码bia在这儿(仅供学习,绝无抄袭之意),这段代码可以实现原地替换;
// class Solution {
// public:
// string replaceSpace(string s) {
// int count = 0, len = s.size();
// // 统计空格数量
// for (char c : s) {
// if (c == ' ') count++;
// }
// // 修改 s 长度
// s.resize(len + 2 * count);
// // 倒序遍历修改,注意循环中i和j的关系
// for(int i = len - 1, j = s.size() - 1; i < j; i--, j--) {
// if (s[i] != ' ')
// s[j] = s[i];
// else {
// s[j - 2] = '%';
// s[j - 1] = '2';
// s[j] = '0';
// j -= 2;
// }
// }
// return s;
// }
// };
注意学习上面代码中遍历字符串的方法:
for (char c : s)