【算法】05替换空格
条评论请实现一个函数,把字符串 s 中的每个空格替换成”%20”。
示例 1:
输入:s = “We are happy.”
输出:”We%20are%20happy.”限制:0 <= s 的长度 <= 10000
方法一:创造新的字符串,在新的字符串上面进行替换。
#define ERROR -1
char* replaceSpace(char* s)
{
char *A = calloc(strlen(s)*3+1,sizeof(char)); //strlen(s)*3+1 全为空格‘ ’->‘%20’+‘\0’
int i = 0;//两个指针i,k
int k = 0;
if(s == NULL)
{
return ERROR;
}
while(s[i]!='\0')
{
if(s[i] == ' ')
{
A[k++] = '%'; //k++,替换
A[k++] = '2';
A[k++] = '0';
i++;
}
else
{
A[k++] = s[i];
i++;
}
}
return A;
}
方法二:不创造新的字符串,在原有的字符串上面进行替换。
从头到尾扫描字符串,每次遇到空格的时候进行替换。替换时把后面的所有字符都往后移动2个字节。
先遍历一遍字符串,计算出字符串中的空格数。再从字符串的后面开始复制和替换,指针p1指向原始字符串的末尾,p2指向替换后的字符串的末尾。
从后往前替换,节省了字符后移的步骤。