剑指 Offer 05. 替换空格 - 力扣(LeetCode) (leetcode-cn.com)
目录
方案1
运行结果
代码
class Solution {
public:
string replaceSpace(string orgs) { //orgs:original string
string newStr("");
int len = orgs.length();
int i = 0;
while (i < len) {
int start = i;
while (i < len && orgs[i] != ' ')
++i;
newStr += orgs.substr(start, i - start);
i < len ? newStr += "%20" : ""; //这里如果把""改成NULL就会产生bug,不知道是什么原因,求解答;使用条件表达式是听说条件表达式运算速度比if…else要快,但还不清楚具体原因
++i;
}
return newStr;
}
};
方案2
首先遍历一遍,找出空格的个数,然后计算出将所有空格替换之后字符串增加的长度,并扩展字符串。最后从后向前将空格依次改为"%20"。
运行结果
代码
class Solution {
public:
string replaceSpace(string s) {
int count = 0;
for (auto ch : s) ch == ' ' ? ++count : NULL;
string extension(count * 2, '\0');
int p0 = s.length() - 1;
s += extension;
for (int p1 = s.length() - 1; p0 >= 0; --p0) {
if (s[p0] == ' ') {
s[p1--] = '0';
s[p1--] = '2';
s[p1--] = '%';
}
else s[p1--] = s[p0];
}
return s;
}
};