题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解决方法
class Solution {
public:
void replaceSpace(char *str,int length) {
if(!str || length<=0) return;
//[1]计算字符数组中空格的个数
int kNum=0;
for(int i=0;i<length;i++)
if(str[i]==' ') kNum++;
if(kNum==0) return;
//[2]设置两个指针p1、p2,从后往前开始替换,直至两个指针指向同一位置
int p1=length-1, p2=p1+kNum*2;
while(p1>=0 && p1<p2){
if(str[p1]==' '){
str[p2--]='0';
str[p2--]='2';
str[p2--]='%';
p1--;
}
else{
str[p2--]=str[p1--];
}
}
}
};