请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char *str,int length) { //length为牛客系统规定字符串输出的最大长度,固定为一个常数
if(str == NULL || length < 0){
return;//返回,不往下面跑了,就是终止函数的运行,返回调用者,函数不需要返回值
}
int i = 0;
int oldNumber = 0;
int replaceNumber = 0;
while(str[i]!='\0'){
oldNumber++;
if(str[i]==' '){
replaceNumber++;
}
i++;
}
int newLength = oldNumber+2*replaceNumber; //插入后的长度
if(newLength > length)//如果计算后的长度大于最大长度就无法插入
return;
int pNewLength = newLength; //记录新的字符串的长度
int pOldLength = oldNumber; //记录以前字符串的长度
while((pOldLength>=0)&&(pOldLength<pNewLength)){
if(str[pOldLength]==' '){ //碰到空格就替换
str[pNewLength--] = '0'; //从后往前替换
str[pNewLength--] = '2';
str[pNewLength--] = '%';
}
else{//不是空格就把pOldlength指向的字符装入pNewlength指向的位置
str[pNewLength--]= str[pOldLength];
}
pOldLength--;//不管是if还是else都要把pOldlength前移
}
}
};