题目描述:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
Note:数组长度变长了,有点类似于在数组中插入数组,这是数组长度就会变长,我们知道对于数组中插入元素,需要使用双指针从数组的末未开始!!!
程序:
class solution:
public:
void func1(int length, char *str) {
if (str == nullptr || length < 1) {
return;
}
int i = 0, origin_length = 0, block_num = 0;
while (str[i] != '\0') {
if (str[i] == ' ') {
block_num++;
}
origin_length++;
i++;
}
int new_length = origin_length + block_num * 2;
if (new_length > lenght) {
return;
}
// 从数组的末尾开始先前迭代,防止i后面的元素被覆盖
int p = origin_length, np = new_length;
whiel (p >= 0 && np >= p) {
if (str[p] == ' ') {
str[np--] = '0';
str[np--] = '2';
str[np--] = '%';
} else {
str[np--] = str[p];
}
p--;
}
}