题目:实现一个函数,把字符串中的每个空格替换成%20。例如,输入“We are happy.”,输出”We%20are%20happy.“。要求在原有的字符串中进行替换,不得使用额外的空间,原有字符串空间保证足够大。
直接从前往后地做替换,会导致一些字符移动多次。转换思路,从后往前做替换,这样每个字符只需要移动一次。
首先遍历一遍字符串,得出空格的数目,因为空格占一个字符,替换后%20占3个字符,那么每多一个空格,所需空间增加2个字符。例如上面例子,有2个空格,算上字符串结束标志' ',共14个字符,替换后变成14+2*2=18个字符。
#include <stdio.h> void ReplaceBlank(char string[], int length) { if(string == NULL || length <= 0) return; int originalLength = 0; //字符数组实际长度 int numberOfBlank = 0; //空格数 int i = 0; while(string[i] != '