今天看见一个这个题
时间限制:1秒
空间限制:32768K
热度指数:31604
算法知识视频讲解
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
这就是题目 我自己写的是这样的
class Solution {
public:
void replaceSpace(char *str,int length) {
string str1="";
for(int i=0;i<length;i++){
if(str[i]==' '){
str1=str1+"20%";
}
else{
str1=str1+str[i];
}
}
cout<<str1;
}
};
后来运行给我的结果是超时。。。
我不明白 百度了一篇博客是这样写的
class Solution {
public:
void replaceSpace(char *str,int length) {
int index=0;
int oldlength=strlen(str),newlength=strlen(str);
while(str[index]!='\0'){
if(str[index]==' '){
newlength+=2;
}
index++;
}
if(length<newlength){
return;
}
while(oldlength>=0){
if(str[oldlength]==' '){
str[newlength--]='0';
str[newlength--]='2';
str[newlength]='%';
}
else{
str[newlength]=str[oldlength];
}
newlength--;
oldlength--;
}
}
};
不明白,按理说他的程序是将这个字符串遍历了两遍,我遍历了一边为什么啊?
后来,我把程序实例化写在DEV C++上运行了一下。
int main(){
char str[100]="hello my world ";
Solution sol;
sol.replaceSpace(str,100);
return 0;
}
这个是百度的
我的天呐!!!真的是震惊世界,为什么啊,为什么?
解析:
。。。。。。
不懂,大家都忙,没时间给我答复。
过些时日再来吧。