题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
输入:
每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。
输出:
对应每个测试案例,出经过处理后的字符串。
样例输入:
We Are Happy
样例输出:
We%20Are%20Happy
代码实现
void replaceBlank(char* str , int length){
if(str == NULL || length <=0)
return;
int originLength = 0;
int numberOfBlank = 0; //空格数量
int i = 0 ;
while(str[i] != '\0'){
++originLength;
if(str[i] == ' '){
++numberOfBlank;
}
++i;
}
int newLength = originLength + 2*numberOfBlank;
int p1 = originLength; //p1指向原字符串的结尾 ('\0处')
int p2 = newLength; //p2指向替换后字符串的结尾
while( p1 >=0 && p2 > p1){
if( str[p1] != ' '){
str[p2--] = str[p1]; //将P1处的字符复制到P2处 P2前移
}else{
str[p2--] = '0';
str[p2--] = '2';
str[p2--] = '%';
}
--p1;
}
}