题解 | 替换空格
#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.依次循环这个过程,直至全部字符串的元素取完