请实现一个函数,将一个字符串中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char* str, int length) {
if (str == nullptr || length <= 0)
return;
int space_count = 0;
//统计空格数量
for (int i = 0; i < length; ++i) {
if (str[i] == ' ')
++space_count;
}
//空格数量为0直接返回
if (space_count == 0)
return;
//从后往前移动,防止覆盖
//题意不能额外开辟空间,原空间替换,数组新长度
int newlength = length + (space_count * 2);
for (int i = length; i >= 0; --i) {
if (str[i] == ' ') {
str[newlength--] = '0';
str[newlength--] = '2';
str[newlength--] = '%';
}
else {
str[newlength--] = str[i];
}
}
}
};