请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:先求出来一共有多少个空格,然后算出来新字符串的长度。然后从原始的字符串的末尾开始向前依次查询,如果是空格,就替换为‘%20’,否则就拷贝过来就行了。
class Solution {
public:
void replaceSpace(char *str,int length) {
if (str == NULL) return;
int num_block = 0;
char *p = str;
while(*p != '\0') {
if (*p == ' ')
++ num_block;
++p;
}
int newlen = length + 2 * num_block;
*(str + newlen + 1) = '\0';
while(newlen > length) {
if (*(str + length) == ' ') {
*(str + newlen--) = '0';
*(str + newlen--) = '2';
*(str + newlen--) = '%';
--length;
} else {
*(str + newlen--) = *(str + length--);
}
}
}
};