剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
思路:
malloc一个链表原字符串长度*3+1的空间。 在全是空格的情况下能够存放的下。还有一个字节用来存放\0。
遍历原字符串,如果不为’\0’就直接copy,如果为’\0’就写入%20。
代码示例:
char* replaceSpace(char* s) {
int len = strlen(s);
char* str = (char*)malloc(3 * len + 1);
char* ps = s;
//保留头部
char* pstr = str;
//遇到\0结束拷贝
while (*ps != '\0')
{
if (*ps != ' ')
{
*pstr = *ps;
pstr++;
ps++;
}
else
{
*pstr = "%";
pstr++;
*pstr = "2";
pstr++;
*pstr = "0";
pstr++;
ps++;
}
}
//注意copy完毕还有一个\0
*pstr = '\0';
return str;
}
该博客介绍了如何在C语言中实现将字符串中的每个空格替换为'%20'的函数。通过分配三倍于原字符串长度的新空间来存储结果,并遍历原字符串,遇到空格时插入'%20',最终返回新字符串。
1674

被折叠的 条评论
为什么被折叠?



