0
点赞
收藏
分享

微信扫一扫

JZ5 替换空格

探头的新芽 2022-03-12 阅读 57

这题我相信做不出来只是因为思路没对,比如想将一个空格直接变成三个空格,然后再将%20放进去诸如此类的,这里先说一下思路及过程:

我们要将空格变为%20,也就是将一个字符变成三个字符,那我们肯定不能直接替换,所以我们先要开辟空间,开辟多大的空间呢?

我们可以写一个循环判断,如果遇到空格我们计数就+1,然后我们再根据计数来开辟空间

看看现在一步的代码:

int count = 0;
for(int i = 0;i<strlen(s);i++)
{
    if(s[i] == ' ')
    {
        count++;
    }
}

然后我们根据count开辟空间:

	char* ch1 = (char*)malloc(strlen(s) +count*2);

开辟好空间,我们就可以开始替换,这里我拿了一个ch1的指针接收开辟好的空间,然后for循环,直到我们把整个数组替换进去。

for (int i = 0; i < strlen(s); i++)
{
	if (s[i] != ' ')
	{
		ch1[j++] = s[i];
	}
	else
	{
		ch1[j++] = '%';
		ch1[j++] = '2';
		ch1[j++] = '0';
	}
}
    ch1[j] = '\0';
return ch1;

这样就写完了,最后放上整体代码:

char* replaceSpace(char* s ) {
int count = 0;
int j = 0;
for(int i = 0;i<strlen(s);i++)
{
    if(s[i] == ' ')
    {
        count++;
    }
}
    	char* ch1 = (char*)malloc(strlen(s) +count*2);
    for (int i = 0; i < strlen(s); i++)
{
	if (s[i] != ' ')
	{
		ch1[j++] = s[i];
	}
	else
	{
		ch1[j++] = '%';
		ch1[j++] = '2';
		ch1[j++] = '0';
	}
}
    ch1[j] = '\0';
return ch1;
}

如果觉得计算空格的count有点麻烦,也可以直接开辟数组长度*2,一样能解决问题。

举报

相关推荐

5.替换空格

替换空格

替换掉空格

替换空格1

替换空格JS

0 条评论