【剑指Offer-05】替换空格
问题
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例
** 输入:** s = "We are happy."
输出: "We%20are%20happy."
解答1:额外申请空间
class Solution {
public:
string replaceSpace(string s) {
string res;
for (char i : s) {
if(i == ' ') res += "%20";
else res += i;
}
return res;
}
};
解答2:原地算法
class Solution {
public:
string replaceSpace(string s) {
int n = s.size(), m = n - 1;
for (char i : s)
if (i == ' ') n += 2;
s.resize(n); // 扩充空间
for (int i = n - 1; i >= 0; i--, m--) {
if (s[m] != ' ') s[i] = s[m];
else {
s[i--] = '0';
s[i--] = '2';
s[i] = '%';
}
}
return s;
}
};