题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof
解题思路
由于遍历字符串之前并不知道字符串有多少个空格,因此通过空间换取时间方式,定义一个大小为3倍大小的内存空间,遍历原字符串,若遍历到的字符为非空格,则直接复制到新的字符数组,若遍历到的字符为空格,则用'%20'三个字符替换,注意替换的时候需要向后移动三个字符大小。
代码
char * replaceSpace(char * s)
{
char *new_s = calloc(strlen(s) * 3 + 1, sizeof(char));
int i = 0, k = 0;
while(s[i] != '\0')
{
if(s[i] == ' ')
{
new_s[k++] = '%';
new_s[k++] = '2';
new_s[k++] = '0';
}
else
{
new_s[k++] = s[i];
}
i++;
}
return new_s;
}
执行结果
时间复杂度:O(N),空间复杂度:O(N)