剑指offer 5# 替换字符串

2020-04-28  本文已影响0人  再凌

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

没啥难度, 问题重点就是开辟新空间的大小. 我的方法是每次拷贝原数组的时候再多申请一个空间, 遇到空格多申请4个空间.

char* replaceSpace(char* s){
    int j = 0;
    char *result = (char*)malloc(sizeof(char) * (j+1)); //预留1个空位,放新元素
    for(int i = 0; s[i]!=0;i++)
    {
        if(s[i]!= ' ')
        {
            result[j++] = s[i];
            result = realloc(result, sizeof(char) * (j+1));
            
        }
        if(s[i] == ' ')
        {
            result = realloc(result, sizeof(char) * (j+3));//先多开辟两个空间, 这样就有预留的%20
            result[j++] = '%';result[j++] = '2';result[j++] = '0';
            result = realloc(result, sizeof(char) * (j+1));
        }    
    }

      //追加\0
    result[j] = 0;
    return result;
}
上一篇 下一篇

猜你喜欢

热点阅读