请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
// 有时间限制,可以考虑用两个指针,两次循环
// 1.首先遍历一遍统计空格的个数num,
// 2.利用新指针指向原始的 lenth+num*2 位置
// 3.指针从后向前移动,如果不是空格则直接复制如果是空格则依次填入0 2 %
// 4,直到循环结束
void replaceSpace(char *str,int length) {
if(str==nullptr || length<=0) return;
int num = 0;
int true_len = 0;
for(true_len =0; str[true_len]!='\0'; true_len++)
{
if(str[true_len]==' ') num++;
}
if(num==0)return;
int new_len = true_len + num * 2;
str[new_len] = '\0';
for(int pre = true_len -1, after = new_len -1; pre >=0, after >=0;)
{
if(str[pre] != ' ') {
str[after]=str[pre];
pre--;
after--;
} else {
str[after]='0';
after--;
str[after]='2';
after--;
str[after]='%';
after--;
pre--;
}
}
}
};