问题描述:请实现一个函数,将一个字符串中的空格替换成“%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--;}
}