题目
请实现一个函数,把字符串 s
中的每个空格替换成"%20"。
示例1:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
代码
思路1:从前往后遍历,遇到空格就插入,再将后面多余的空格删掉
class Solution {
public:
string replaceSpace(string s) {
for (int i = 0; i < s.length(); i++) {
if (s[i] == ' ') {
s.insert(i, "%20");
s.erase(i+3, 1);
}
}
return s;
}
};
思路2:先对数组扩容,再使用双指针法
class Solution {
public:
string replaceSpace(string s) {
int count = 0;
int sOldSize = s.size();
int sNewSize;
for (int i = 0; i < sOldSize; i++) {
if (s[i] == ' ') {
count++;
}
}
sNewSize = sOldSize + count * 2; // 乘2是因为对空格位置用3个字符替代,即有一个空格再添加两个空格即可。
s.resize(sNewSize); // 扩容
for (int i = sOldSize - 1, j = sNewSize - 1; i < j; i--, j--) {
if (s[i] != ' ') {
//不是空格,赋值到后面去
s[j] = s[i];
}
else {
s[j] = '0';
s[j-1] = '2';
s[j-2] = '%';
j -= 2;
}
}
return s;
}
};