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

