题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
分析:
要将空格替换成“%20”,先计算空格的个数,然后得出新的字符串的长度,利用两个指针p1,p2,p1指向字符串原来末尾位置,p2指向新的末尾位置。若原字符串不为空格,直接更新,否则从后往前依次赋为‘0’‘2’‘%’。
void replaceSpace(char *str,int length) {
if(length <= 0)
return;
int num_bank = 0;
int Newlen = 0;
for(int i = 0; i < length; i++)
{
if(str[i] == ' ')
num_bank++;
}
Newlen = length + num_bank*2;
int p1 = length - 1, p2 = Newlen - 1;
while(p1 >= 0 && p1 < p2)
{
if(str[p1] == ' ')
{
str[p2--] = '0';
str[p2--] = '2';
str[p2--] = '%';
}
else
{
str[p2--] = str[p1];
}
p1--;
}
}