替换空格(二)

题目描述:

请实现一个函数,将一个字符串中的每个空格替换成 ​​%20​​​ 。例如,当字符串为 ​​We Are Happy​​​.则经过替换之后的字符串为 ​​We%20Are%20Happy​​。

代码(已在牛客上 AC)

无他, 小心一点即可.

class Solution {
public:
// length 为字符数组的总容量
void replaceSpace(char *str,int length) {
if (!str || length <= 0) return;
int len = 0, i = 0, numOfSpace = 0;
while (str[i] != '\0') {
++ len; // 原字符串的真正长度
if (str[i] == ' ')
++ numOfSpace;
i ++;
}
// 注意 newlen 不要写成了 len + 1 + 2 * numOfSpace, 因为 len 已经是指向了'\0'
int newlen = len + 2 * numOfSpace;
if (newlen > length) return; // 如果新的字符串长度大于字符数组容量...
while (i >= 0) {
if (str[i] == ' ') {
str[newlen --] = '0';
str[newlen --] = '2';
str[newlen --] = '%';
i --;
}
else
str[newlen --] = str[i --];
}
}
};