描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char *str, int lenght) {
string str2 = "";
int count = 0;
for(int i = 0; i<lenght; i++) {
if(' ' == str[i]) {
str2 += "%20";
count++;
}
else str2 += str[i];
}
lenght += 2*count;
for(int i = 0; i<lenght; i++) {
str[i] = str2[i];
}
}
};
class Solution {
public:
void replaceSpace(char *str, int lenght) {//实际lenght指的是限制最大长度
if(str == NULL||lenght <= 0) return; //提高鲁棒性
//先统计长度
int count = 0;//空格数
int lenght_new = 0;
while(str[lenght_new] != '\0') {
if(' ' == str[i]) count++;
lenght_new++;
}
count = lenght_new + 2*count;
//倒着添加
//当 i = totalLen的时候说明前面已经
//都没有空格了,可以节约一部分时间,而不是一直赋值下去
for(int i = lenght_new -1; i >= 0&&i != count; i--) {
if(str[i] != ' ')
str[--count] = str[i];
else {
str[--count] = '0';
str[--count] = '2';
str[--count] = '%';
}
}
}
};