/*
题目:
请实现一个函数,把字符串中的每个空格替换成‘%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--;
}
}
原文:https://www.cnblogs.com/buaaZhhx/p/11801882.html