问题描述:实现一个函数,把字符串里的空格替换成%20,如'We are happy' 替换成 'We%20are%20happy'
基本思想:1. 统计空格个数:count 2. 替换后长度为length+count*2,按此长度从后往前插,因为这样不会破坏源字符串,减少移动次数
void replaceSpace(char * str, int length)
{
int len = 0;
int count = 0;
while(str[len]!='\n')
{
if(str[i] == ' ')
count++;
len++;
}
int newlen = len + count*2;
# 扩充后的长度太长
if(newlen > length)return false;
while(len<newlen)
{
if(str[len] == ' ')
{ # 倒序插入,本质是就地移动
str[newlen--] = '0';
str[newlen--] = '2';
str[newlen--] = '%';
}
else
{
str[newlen--] = str[len];
}
len--;
}
return true;
}