题解 | 替换空格

#include <stdlib.h>
#include <string.h>

char* replaceSpace(char* s) {
    // 计算原始字符串长度和空格数量
    int length = strlen(s);
    int count = 0;
    for (int i = 0; i < length; i++) {
        if (s[i] == ' ') {
            count++;
        }
    }

    // 动态分配足够的空间
    char* ret = (char*)malloc(length + count * 2 + 1);
    if (ret == NULL) {
        return NULL; // 内存分配失败处理
    }

    // 遍历原始字符串并构建新字符串
    int j = 0;
    for (int i = 0; i < length; i++) {
        if (s[i] == ' ') {
            ret[j++] = '%';
            ret[j++] = '2';
            ret[j++] = '0';
        }
        else {
            ret[j++] = s[i];
        }
    }
    ret[j] = '\0';  // 添加字符串结束符

    return ret;
}

1.计算字符串长度,便于后续遍历字符串s

2.找出空格个数count,目前一个空格替换为3个字符的字符串

3.计算新的字符串的长度=lenth+count*2+1(字符串的结束符)

4.开始给新的字符串赋值

a. 非空格,赋予原值

b.空格,需要j~j+2分别赋值,并且需要改变新的字符串的索引值,将新的字符串的索引值+2

c.依次循环这个过程,直至全部字符串的元素取完

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务