请实现一个函数,将一个字符串中的每个空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy 遍历一次给定字符串str,确定原字符串长度oldlength,计算空格出现的次数count,计算替换后新字符串的长度令p1指向原字符串末尾,p2指向新字符串末尾若p1指向的字符不为' '则将str[p1]赋给str[p2]否则 将' '替换为%20,p1--,p2-- class Solution { public: void replaceSpace(char *str,int length) { if(str == NULL || length == 0) return; int oldlength = 0, count = 0, i=0; while(str[i]!='\0') { if(str[i]==' ') ++count; ++i; ++oldlength; } int p1 = oldlength, p2 = oldlength + count*2; //p1指向字符串结束处 p2指向替换后的字符串结束处 if(p2 > length) //若所需空间大于给定空间则返回 return; while(p1 < p2 && p1 >= 0) //当p1 p2不相等时 替换 { if(str[p1]==' ') { str[p2--] = '0'; str[p2--] = '2'; str[p2--] = '%'; } else str[p2--] = str[p1]; p1--; } } };