//1.
/*char* replaceSpace(char* s)
{
    char* ret = NULL;
    char* tmp = NULL;
    int count = 0;
    char* arr = "%20";
    size_t len = strlen(s);
    char* k = s;
    while (*k != '\0')
    {
        if (*k == ' ')
        {
            count++;
        }
        k++;
    }
    ret = (char*)malloc(len + 3 * count + 1);
    if (ret == NULL)
    {
        perror("malloc");
        return NULL;
    }
    else
    {
        tmp = ret;
    }
    while (*s != '\0')
    {
        if (*s == ' ')
        {
            int i = 0;
            int j = 0;
            char* pr = arr;
            for (i = 0; i < 3; i++)
            {
                *ret = *pr;
                j++;
                if (j == 3)
                {
                    break;
                }
                ret++;
                pr++;
            }
        }
        else
        {
            *ret = *s;
        }
        s++;
        ret++;
    }
    *ret = *s;
    return tmp;
}*/
//2.
#include<assert.h>
char* replaceSpace(char* s)
{
    assert(s);
    int i = 0;
    int j = 0;
    char* p = s;
    int spacecnt = 0;
    //计算空格个数
    while (*p)
    {
        if (*p == ' ')
        {
            spacecnt++;
        }
        p++;
    }
    int length = strlen(s);
    int newlen = length + spacecnt * 2;
    int end1 = length - 1;
    int end2 = newlen - 1;
    char* r = (char*)malloc(sizeof(char) * newlen + 1);
    for(i = end1,j = end2; i >= 0; i--,j--)
    {
        if(s[i] == ' ')
        {
            r[j--] = '0';
            r[j--] = '2';
            r[j] = '%';
        }
        else 
        {
            r[j] = s[i];
        }
    }
    r[newlen] = '\0';
    return r;
}