/* 题目: 请实现一个函数,把字符串中的每个空格替换成'%20'. 例如输入“We are happy",则输出 ”We%20are%happy"。 */ /* 结题思路: 考虑给定数组内存足够,且不能开辟新的数组的情况。 使用两个指针,从后往前复制。 注意数组最后一个字符为'\0'。 */ void replaceBlank(char str[],int length){ if(str == null || length <= 0){ return; } int blankNum = 0; int index = 0; int originLength = 0; while(str[index] !='\0'){ if(str[index] == ' '){ blankNum++; } index++; originLength++; } int newLength = originLength + 2 * blankNum; if(length < newLength) return; int indexOfOrigin = originLength; int indexOfNew = newLength; while(indexOfOrigin < indexOfNew && indexOfOrigin >= 0){//标准答案加了indexOfOrigin >= 0 ,不明白意义 if(str[indexOfOrigin] != ' '){ str[indexOfNew--] = str[indexOfOrigin]; }else{ str[indexOfNew--] = '0'; str[indexOfNew--] = '2'; str[indexOfNew--] = '%'; } indexOfOrigin--; } }