数组替换——(问题还未解决)


今天看见一个这个题

时间限制: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;
}


这个是我写的结果:



这个是百度的



我的天呐!!!真的是震惊世界,为什么啊,为什么?



解析:

。。。。。。


不懂,大家都忙,没时间给我答复。



过些时日再来吧。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值