替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
输入:s = "We are happy."
输出:"We%20are%20happy."
可以使用双指针的方式来实现字符串中空格的替换,具体做法如下:
- 第一次遍历字符串 s,统计出其中空格的个数,由于每个空格需要被替换成三个字符 %20,因此可以根据空格的数量计算出替换后字符串的长度。
- 在原字符串长度的基础上增加替换后字符串的长度差,从而扩展字符串的长度。
- 使用双指针法,分别从字符串结尾和扩展后的字符串结尾开始向前遍历,当指针指向空格时,将其替换为 %20。
- 当指针不再指向空格时,将指针所指的字符直接复制到新字符串中。
class Solution {
public:
string replaceSpace(string s) {
int count = 0, len = s.size();
for (int i = 0; i < len; ++i) {
if (s[i] == ' ') {
++count;
}
}
int new_len = len + count * 2;
s.resize(new_len);
int i = len - 1, j = new_len - 1;
while (i >= 0 && j >= 0) {
if (s[i] == ' ') {
s[j--] = '0';
s[j--] = '2';
s[j--] = '%';
} else {
s[j--] = s[i];
}
--i;
}
return s;
}
};