这题我相信做不出来只是因为思路没对,比如想将一个空格直接变成三个空格,然后再将%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,一样能解决问题。