题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
先统计空格个数,然后从后向前替换,实现O(n)复杂度
class Solution {
public:
void replaceSpace(char *str,int length) {
int newLength=0;
int strLength=0;
int i=0;
while(str[i]!='\0') {
if(str[i]==' ') {
newLength+=2;
}
newLength++;
strLength++;
i++;
}
if(newLength>length) {
return ;
}
int index1=strLength;
int index2=newLength;
while(strLength>=0&&strLength<newLength) {
if(str[strLength]==' ') {
str[newLength--]='0';
str[newLength--]='2';
str[newLength--]='%';
} else {
str[newLength--]=str[strLength];
}
strLength--;
}
}
};
int main() {
Solution sol;
char test[]="123 24 ";
sol.replaceSpace(test,20);
cout<<test<<endl;
system("pause");
return 0;
}