问题描述:请实现一个函数,将一个字符串中的空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
问题分析:
1.解决这道题应该关注的点:
1)字符串的长度
2)空格个数
3)替换后字符串长度
2.替换顺序
要将20%替换进字符串中,有两种替换方法:一种是从头开始替换,另一种是从尾开始替换。可是如果是从头开始替换的话,会覆盖掉一些数据,所以应该从尾开始替换。
3.想清楚这两点之后,思路应该是很清晰了,那么就敲代码了!
源代码如下:
void replaceSpace(char *str,int length) {
if(str == NULL && length <= 0)
return;
int count = 0;
int str_len = 0;
int i = 0;
while(str[i] != '\0')
{
++str_len;
if(str[i] == ' ') {
count++;
}
++i;
}
int new_str_len = str_len + 2 * count;
if(new_str_len > length) {
return;
}
int len = str_len;
int index = new_str_len;
while(len >=0 && index > len)
{
if(str[len]==' ')
{
str[index--] = '0';
str[index--] = '2';
str[index--] = '%';
}
else {
str[index--] = str[len];
}
len--;
}
}