题目:
答案:
class Solution {
public:
void replaceSpace(char *str,int length) {
int blacknumber=0;
//先遍历一遍,计算字符串中的空格数目
for (int i=0;i<length;i++){
if(str[i]==' ')
blacknumber++;
}
for(int i=length-1;i>=0;i--){
if(str[i]!=' '){
str[i+2*blacknumber]=str[i];
}
else{
blacknumber--;
str[i+2*blacknumber]='%';
str[i+2*blacknumber+1]='2';
str[i+2*blacknumber+2]='0';
}
}
}
};
思路分析:
1.首先遍历一下字符,得到字符串的大小
2.本文采用的方法是从最后一个元素一个一个向后移动。遇到空格然后将内容改为%20 ,前提是数组后边有足够的内存空间
这个方法在牛课网上跑通了,但是时间复杂度这些还都没进行考虑。